Pervasive Realtime Framework

ABSTRACT

A pervasive realtime framework supports the execution of realtime software applications with high-level functions that significantly reduce the effort and time needed to develop realtime software applications in a new operating environment paradigm in which realtime connections between network nodes are pervasive. The pervasive realtime framework handles the complex tasks of connecting to communicants, virtual areas, and other network resources, as well as switching those connections in response to user inputs and thereby enables software application developers to focus on developing high-level realtime software application functionality.

CROSS-REFERENCE TO RELATED APPLICATIONS

Under 35 U.S.C. § 119(e), this application claims the benefit of U.S.Provisional Application No. 61/120,379, filed Dec. 5, 2008, the entiretyof which is incorporated herein by reference.

This application relates to the following co-pending patentapplications, the entirety of each of which is incorporated herein byreference:

-   U.S. patent application Ser. No. 12/418,243, filed Apr. 3, 2009;-   U.S. patent application Ser. No. 11/923,629, filed Oct. 24, 2007;    and-   U.S. patent application Ser. No. 11/923,634, filed Oct. 24, 2007.

BACKGROUND OF THE INVENTION

Advances in high-speed networks and computer processing resources haveresulted in the proliferation of a wide variety of different realtimesoftware applications, including realtime communications systems (e.g.,text chat, voice, and video communication systems) and realtime datastreaming systems that require fast response times (e.g., onlinefinancial trading systems). A realtime software application operates ona computer in an application environment created by a computer operatingsystem. The computer operating system typically provides a standardized,consistent application programming interface (API) between the realtimesoftware application program and the computer system hardware. The APItypically allows the realtime software application to interface with oraccess the computer system hardware in a standardized manner through aset of low-level primitives. The low-level primitives must be integratedby low-level plumbing code into higher-level functionality that supportsthe realtime functionality required by realtime software applications.The minimal development support provided by a computer operating systemimposes a considerable burden on the developers of realtime softwareapplications: not only is significant effort needed to write theunderlying plumbing code, but also the intrinsic complexity of wiringcode that interacts directly with low-level primitives inevitablyincreases the time needed to develop realtime software applications.

BRIEF SUMMARY OF THE INVENTION

In one aspect, the invention features a method in accordance with whichan instance of a virtual area is determined based on a designation ofthe virtual area in a connection rule associated with at least one of asoftware application and a computer data file. One or more network nodesthat are associated with the instance of the virtual area areascertained. Transfer of at least one realtime data stream is initiatedover at least one network connection with at least one of the networknodes in a context defined by the instance of the virtual area.

In another aspect, the invention features a method in accordance withwhich a designation of at least one connection target in a connectionrule is resolved to at least one respective network node connectionhandle, where the connection rule is associated with at least one of asoftware application and a computer data file. Transfer of at least onerealtime data stream is initiated over at least one network connectionwith at least one network node respectively associated with the at leastone respective network node connection handle.

In another aspect, the invention features a method in accordance withwhich an application programming interface (API) is published. The APIdeclares functions that perform operations comprising administeringnetwork connections of realtime data streams based on connection rules.Each of the connection rules includes at least one of a respectivedesignation of a virtual area and a respective designation of one ormore connection targets that are associated with the virtual area. Inresponse to an invocation of the API, a realtime data stream connectionwith at least one network node is administered based on a respective oneof the connection rules that is associated with at least one of asoftware application and a computer data file and at least one positionin the virtual area.

In another aspect, the invention features a method in accordance withwhich an application programming interface (API) is invoked with a callthat establishes a network connection with at least one connectiontarget in a context defined by an instance of a virtual area based on aconnection rule that is associated with at least one of a softwareapplication and a data file on which the software application isoperable. The connection rule includes a respective designation of thevirtual area and a respective designation of one or more connectiontargets associated with the virtual area. The API is invoked with a callthat initiates transfer of at least one realtime data stream with theconnection target over the network connection based on position in thevirtual area instance.

In another aspect, the invention features a method in accordance withwhich at least the following operations are performed in response to anapplication programming interface (API) call that includes a definitionof position in at least one of a software application and a computerdata file: determining a connection rule that is associated with theposition definition and includes a designation of a virtual area;establishing a session with a network infrastructure service that hostsan instance of the virtual area and publishes state data describing acurrent state of the virtual area instance; subscribing to the statedata; and rendering a human-perceptible view of the state data.

In one aspect, the invention features a method in accordance with whichat least the following operations are performed in response to anapplication programming interface (API) call that includes a definitionof position in at least one of a software application and a computerdata file: determining a connection rule that is associated with theposition definition and includes a designation of at least oneconnection target; establishing a session with a network infrastructureservice that manages distribution of connection handles for networknodes: declaring to the network infrastructure service an intention toconnect to one or more of the connection targets designated in theconnection object: receiving from the network infrastructure service atleast one respective network node connection handle; and initiatingtransfer of at least one realtime data stream over at least one networkconnection with a network node that is associated with the at least onerespective network node connection handle.

In one aspect, the invention features a method in accordance with whichat least the following operations are performed in response to anapplication programming interface (API) call that includes a definitionof position in at least one of a software application and a computerdata file: determining a connection rule that is associated with theposition definition and includes a designation of at least oneconnection target; establishing a session with a network infrastructureservice that manages exchange of presence data between network nodes;and declaring to the network infrastructure service an intention toexport presence data that includes the definition of position to atleast one of the network nodes respectively corresponding to the atleast one connection target.

The invention also features apparatus operable to implement theinventive methods described above and computer-readable media storingcomputer-readable instructions causing a computer to implement theinventive methods described above.

Other features and advantages of the invention will become apparent fromthe following description, including the drawings and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagrammatic view of an embodiment of an operatingenvironment that includes a pervasive realtime framework and a networkinfrastructure service environment.

FIG. 2 is a flow diagram of an embodiment of a method that is performedby an embodiment of the pervasive realtime framework of FIG. 1.

FIG. 3 is a block diagram of an embodiment of the pervasive realtimeframework and the network infrastructure service environment of FIG. 1establishing realtime communications in a communication context definedby a virtual area instance.

FIG. 4 is a diagrammatic view of an embodiment of a network node thatincludes a graphical user interface presenting a two-dimensionaldepiction of a shared virtual area.

FIG. 5A is a block diagram of an embodiment of a computer data file.

FIG. 5B is a diagrammatic view of an embodiment of a computer data filesection definition database storing records that define sections of thecomputer data file of FIG. 5A.

FIG. 6A is a block diagram of an embodiment of a software applicationfile.

FIG. 6B is a diagrammatic view of an embodiment of a softwareapplication section definition database storing records that definesections of the software application of FIG. 6A.

FIG. 7A is a diagrammatic view of an embodiment of an abstract virtualspace that has zones which are mapped to sections of the softwareapplication of FIG. 6A.

FIG. 7B is a diagrammatic view of embodiments of two visual virtualspaces that have zones which are mapped to sections of the softwareapplication of FIG. 6A.

FIG. 8 is a diagrammatic view of an embodiment of a connection objectassociation database containing records with connection objectidentifiers pointing to respective records in an embodiment of aconnection object database.

FIG. 9 is a diagrammatic view of an embodiment of a connection objectdatabase.

FIG. 10 is a block diagram of an embodiment of a network node connectedto three other network nodes in an embodiment of the operatingenvironment of FIG. 1.

FIG. 11 is a flow diagram of an embodiment of a method of logging intoan embodiment of the network infrastructure service environment of FIG.1.

FIG. 12 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of the pervasive realtime framework of FIG.1.

FIG. 13 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of the pervasive realtime framework of FIG.1 in ascertaining connection targets via an embodiment of a rendezvousservice.

FIG. 14 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of the pervasive realtime framework of FIG.1 in ascertaining connection targets via an embodiment of an areaservice.

FIG. 15 is diagrammatic view of an embodiment of the operatingenvironment shown in FIG. 10.

FIG. 16 is a diagrammatic view of an embodiment of an operating systemand an embodiment of the pervasive realtime framework of FIG. 1.

FIG. 17 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of an area connect service of the pervasiveframework of FIG. 1.

FIG. 18 is a flow diagram of an embodiment of a method that isimplemented by embodiments of an area entry service, a stream switchingservice, and stream handler services in an embodiment of the pervasiveframework of FIG. 1.

FIG. 19 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of a stream switching service in anembodiment of the pervasive framework of FIG. 1.

FIG. 20 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of a stream switching service in anembodiment of the pervasive framework of FIG. 1.

FIG. 21 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of a stream switching service in anembodiment of the pervasive framework of FIG. 1.

FIG. 22 is a flow diagram of an embodiment of a method that isimplemented by an embodiment of a target connect service in anembodiment of the pervasive framework of FIG. 1.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, like reference numbers are used toidentify like elements. Furthermore, the drawings are intended toillustrate major features of exemplary embodiments in a diagrammaticmanner. The drawings are not intended to depict every feature of actualembodiments nor relative dimensions of the depicted elements, and arenot drawn to scale.

I. Definition of Terms

A “computer” is any machine, device, or apparatus that processes dataaccording to computer-readable instructions that are stored on acomputer-readable medium either temporarily or permanently. A “computeroperating system” is a software component of a computer system thatmanages and coordinates the performance of tasks and the sharing ofcomputing and hardware resources. A “software application” (alsoreferred to as software, an application, computer software, a computerapplication, a program, and a computer program) is a set of instructionsthat a computer can interpret and execute to perform one or morespecific tasks. An “application programming interface” (or API) is a setof declarations of the functions (or procedures) that an operatingsystem, library, or service provides to support requests made by asoftware application. An API specifies an interface and the behavior ofthe identifiers specified in that interface. An implementation of an APIrefers to the software application code that provides the functionalitydescribed by the API. A “computer data file” is a block of informationthat durably stores data for use by a software application.

An “interaction space” is an abstract space that has a dimension foreach of at least one of a software application and a computer data fileand has “positions” that correspond to different sections of thesoftware application and/or data file (e.g., chapters or presentationslides in a computer data file, and different functions or entry pointsof a software application). The “current focus of a user with respect tothe interaction space” is the section of the software application and/orcomputer data file that currently is active on the user's network node.

A “database” is an organized collection of records that are presented ina standardized format that can be searched by computers. A database maybe stored on a single computer-readable data storage medium or it may bedistributed across multiple computer-readable data storage media.

A “data sink” (referred to herein simply as a “sink”) is any of adevice, part of a device (e.g., a computer), or software that receivesdata.

A “data source” (referred to herein simply as a “source”) is any of adevice, part of a device (e.g., a computer), or software that originatesdata.

A “framework” is a set of reusable cooperating classes of high-levelfunctions and a protocol that governs the ways in which low-levelfunctions (e.g., operating system primitives and kernel primitives) canbe combined, including rules that define how the primitives can becalled by a software application and how the framework responds to suchcalls.

A “network node” is a junction or connection point in a communicationsnetwork. Exemplary network nodes include, but not limited to, aterminal, a computer, and a network switch. A “network connection” is alink between two communicating network nodes. A “connection rule”designates at least one of a virtual area and a connection target, andincludes an optional set of one or more connection conditions thatguides the behavior of a suitably configured software application orservice in initiating network connections. A “connection target” refersto an identifier or connection handle (e.g., a uniform resourceidentifier (URI)) that can be used to establish a network connectionwith a communicant, resource, or service on a network node. A“connection condition” specifies one or more parameters that influencethe establishing of a network connection, the managing of a networkconnection, or the processing of data transferred across a networkconnection. For example, a connection condition may describe a predicateon the operating environment that should be satisfied before a networkconnection is attempted or established.

An “object” is any type of discrete element in a virtual area that maybe usefully treated separately from the geometry of the virtual area.Exemplary objects include doors, portals, windows, view screens, andspeakerphone. An object typically has attributes or properties that areseparate and distinct from the attributes and properties of the virtualarea. An “avatar” is an object that represents a communicant in avirtual area.

“Presence” refers to the ability and willingness of a networked entity(e.g., a communicant, service, or device) to communicate, where suchwillingness affects the ability to detect and obtain information aboutthe state of the entity on a network and the ability to connect to theentity.

A “realtime data stream” is data that is structured and processed in acontinuous flow and is designed to be received with no delay or onlyimperceptible delay. Realtime data streams may fall into differentpriority categories ranging from higher priority, hard realtime datastreams (e.g., voice streams) to lower priority, soft realtime datastreams (e.g., screen sharing data streams). Realtime data streamsinclude digital representations of voice, video, user movements, facialexpressions and other physical phenomena as well as data within thecomputing environment that may benefit from rapid transmission, rapidexecution, or both rapid transmission and rapid execution, including forexample, avatar movement instructions, text chat, realtime data feeds(e.g., sensor data, machine control instructions, transaction streamsand stock quote information feeds), and file transfers.

A “stream mix” is a combination of two or more realtime data streams ofthe same or semantically consistent type (e.g., audio, video, chat, andmotion data). For example, a set of voice streams might be mixed into asingle voice stream or a voice stream might be mixed into the audioportion of a video stream.

A “switching rule” is an instruction that specifies a connection ordisconnection of one or more realtime data sources and one or morerealtime data sinks subject to one or more conditions precedent.

A “virtual area” (also referred to as an “area” or a “place”) is arepresentation of a computer-managed space or scene. Virtual areastypically are one-dimensional, two-dimensional, or three-dimensionalrepresentations: although in some embodiments a virtual area maycorrespond to a single point. Oftentimes, a virtual area is designed tosimulate a physical, real-world space. For example, using a traditionalcomputer monitor, a virtual area may be visualized as a two-dimensionalgraphic of a three-dimensional computer-generated space. However,virtual areas do not require an associated visualization to implementswitching rules. A virtual area typically refers to an instance of avirtual area schema, where the schema defines the structure and contentsof a virtual area in terms of variables and the instance defines thestructure and contents of a virtual area in terms of values that havebeen resolved from a particular context.

A “virtual area specification” is a virtual area description that isused in creating a shared virtual area communication environment.

A “virtual communication environment” is a representation of acomputer-managed space that includes at least one virtual area andsupports realtime communications between communicants.

A “zone” is a region of a virtual area that is associated with at leastone switching rule or governance rule. A switching rule controls theswitching (e.g., routing, connecting and disconnecting) realtime datastreams between network nodes communicating through a shared virtualarea. A governance rule controls a communicant's access to a resource(e.g., an area, a region of an area, or the contents of that area orregion), the scope of that access, and follow-on consequences of thataccess (e.g., the requirement that audit records relating to that accessmust be recorded).

A “position” in a virtual area refers to a location of a point or anarea or a volume in the virtual area. A point typically is representedby a single set of one-dimensional, two-dimensional, orthree-dimensional coordinates (e.g., x, y, z) that define a spot in thevirtual area. An area typically is represented by the three-dimensionalcoordinates of three or more coplanar vertices that define a boundary ofa closed two-dimensional shape in the virtual area. A volume typicallyis represented by the three-dimensional coordinates of four or morenon-coplanar vertices that define a closed boundary of athree-dimensional shape in the virtual area.

A “communicant” is a person who communicates or otherwise interacts withother persons over a network connection, where the communication orinteraction may or may not occur in the context of a shared virtualarea. A “user” is a communicant who is operating a particular networknode that defines a particular perspective for descriptive purposes.

A “predicate” is a conditional part of a rule.

As used herein, the term “includes” means includes but not limited to,and the term “including” means including but not limited to.

II. Introduction

The embodiments that are described herein provide a pervasive realtimeframework that supports the execution of realtime software applicationswith high-level functions that significantly reduce the effort and timeneeded to develop realtime software applications in a new operatingenvironment paradigm in which realtime connections between network nodesare pervasive. The pervasive realtime framework handles the complextasks of connecting to communicants, virtual areas, and other networkresources, as well as switching those connections in response to userinputs and thereby enables software application developers to focus ondeveloping high-level realtime software application functionality.

In some embodiments, the pervasive realtime framework provides functionsthat integrate traditional operating system functions (e.g., processmanagement functions, file management functions, memory managementfunctions, storage management function, device management functions, andnetwork management functions) with realtime functions (e.g., realtimescheduling functions, realtime connection functions, and realtime datastream handling functions).

In some embodiments, the pervasive realtime framework includes a libraryof pre-coded solutions to common pervasive realtime tasks, a kernel thatsupports the execution of those tasks, and tools for configuring andbuilding applications that can leverage the functions provided by theframework. In this way, the pervasive realtime framework brings a set ofrealtime high-level functions and primitives into peer relationship withtraditional operating system primitives.

Some embodiments of the pervasive realtime framework enable softwareapplication designers to define the semantics of position in a softwareapplication or a computer data file and to associate those positionsemantics with at least one of a virtual area and a connection target.These embodiments include functions that can be invoked by softwareapplications to use position as a switching metaphor in a spatialnetwork connection system. These features allow position in a softwareapplication or a computer data file to be used, for example, to diveconnections to virtual areas, entries into virtual areas, connections tocommunicants and other sources or sinks of realtime data streams, anddeterminations of presence data relating to communicants and networkresources and services.

III. Overview

A. A Pervasive Realtime (PRT) Framework

FIG. 1 shows an embodiment of a pervasive realtime (PRT) framework 12that administers network connections with a variety of different networknodes 14, 16, 18, 20, 22, 24, 26 based on position in at least one of acomputer data file 28 and a software application 30 and based on one ormore connection rules 32 that are associated with at least one of thesoftware application 28 and the computer data file. Each of theconnection rules 32 designates at least one of a virtual area and aconnection target, and includes an optional set of one or moreconnection conditions that guides the behavior of a suitably configuredsoftware application or service in administering network connections.

FIG. 2 shows an exemplary embodiment of a method that is implemented bythe PRT framework 12. In accordance with this method, the PRT framework12 publishes an application programming interface (API) that declaresfunctions that perform operations that include administering networkconnections of realtime data streams based on the connection rules 32(FIG. 2, block 34). Each of the connection rules 32 includes at leastone of a respective designation of a virtual area and a respectivedesignation of one or more connection targets that are associated withthe virtual area. In response to an invocation 36 of the API, the PRTframework 12 administers a realtime data stream connection with at leastone network node based on a respective one of the connection rules 32that is associated with at least one of the software application 30 andthe computer data file 28 and at least one position in the virtual area(FIG. 2, block 38).

In the exemplary embodiment shown in FIG. 1, the computer data file 28contains three sections (S1, S2, S3) each of which is defined as arespective position in the computer data file 28 (e.g., a respectiveparagraph or chapter in a word processing document); the softwareapplication 30 contains six sections (S4, S5, S6, S7, S8, S9) each ofwhich is defined as a respective position in the software application 30(e.g., a respective function or entry point of the softwareapplication). Each of the sections (S1-S3) of the computer data file 28and each of the sections (S4-S9) of the software application 30 isassociated with at least one of the connection rules 32. In this way,the PRT framework 12 can connect each of the sections S1-S9 either to avirtual area or one or more connection targets, or both, in a realtimeway, including exporting presence information to the associatedconnection targets, inviting the associated connection targets toparticipate in a communication session in the associated virtual area,and establishing realtime connections with the associated connectiontargets.

In implementing the method of FIG. 2 with respect to the embodimentshown in FIG. 1, for example, the PRT framework 12 administers arespective realtime data stream connection with one or more of thenetwork nodes 14-26 based on the reported position in at least one ofthe computer data file 28 and the software application 30, and based onthe connection rule that is associated with the reported position. Whenthe reported position is S1, the PRT framework 12 administers a realtimedata stream network connection with network node 14 (Data Source 1;e.g., a realtime stock quoting service) in accordance with theconnection rule associated with the position S1. When the reportedposition is S2, the PRT framework 12 administers a video conferencenetwork connection with network nodes 16, 18, and 20 (Business Contacts)in accordance with the connection rule associated with the position S2.When the reported position is S8, the PRT framework 12 administers arealtime data stream connection with network node 22 (Data Source 2;e.g., a realtime music or video streaming service) in accordance withthe connection rule associated with the position S8. When the reportedposition is S9, the PRT framework 12 administers voice and text chatnetwork connections with network nodes 24, 26 (Friends) in accordancewith the connection rule associated with the position S9.

Thus, the PRT framework 12 enables software application developers tobuild software applications that can operate in a pervasive realtimeconnection environment through the association of connection rules withsoftware applications, computer data files, and parts thereof. The PRTframework 12 administers the realtime connections and realtime datastream processing as required by the connection rules and thereby allowssoftware application developers to focus on the value-added task ofgenerating software applications that can leverage this new paradigm ofpervasive network connections.

B. Operating Environment

As shown in FIGS. 1 and 3, the PRT framework 12 operates in the contextof an operating environment 40 that includes a network 42 and a networkinfrastructure service environment 43.

1. Network Environment

The network 42 may include any of a local area network (LAN), ametropolitan area network (MAN), and a wide area network (WAN) (e.g.,the internet). The network 42 typically includes a number of differentcomputing platforms and transport facilities that support thetransmission of a wide variety of different media types (e.g., text,voice, audio, and video) between network nodes.

The PRT framework 12 typically operates on a network node that includessoftware and hardware resources which—together with administrativepolicies, user preferences (including preferences regarding theexportation of the user's presence and the connection of the user toareas and connection targets), and other settings—define a localconfiguration S8 that influences the administration of realtimeconnections with other network nodes. The network connections betweennetwork nodes may be arranged in a variety of different stream handlingtopologies, including a peer-to-peer architecture, a server-mediatedarchitecture, and hybrid architectures that combine aspects ofpeer-to-peer and server-mediated architectures. Exemplary topologies ofthese types are described in (U.S. application Ser. Nos. 11/923,629 and11/923,634, both of which were filed on Oct. 24, 2007.

2. Infrastructure Service Environment

The network infrastructure service environment 43 provides one or morenetwork infrastructure services that cooperate with the PRT framework 12in the administration of the network connections with the network nodes14-26. The network infrastructure services may run on a single networknode or may be distributed across multiple network nodes. The networkinfrastructure services typically run on one or more dedicate networknodes (e.g., a server computer or a network device that performs edgeservices, such as routing and switching). In some embodiments, however,one or more of the network infrastructure services run on at least oneof the communicants' network nodes. In some embodiments, one or more ofthe network infrastructure services run on one or more virtual machines,which may be running on the same physical hardware. Among the networkinfrastructure services that are included in the exemplary operatingenvironment 40 are a security service 44, an area service 46, arendezvous service 48, and an interaction service 50.

The security service 44 controls communicants' access to the resourcesof the operating environment 40. The access control method that isimplemented by the security service 44 typically is based on eithercapabilities (where access is granted to entities having propercapabilities or permissions) or an access control list (where access isgranted to entities having identities that are on the list). After thesecurity service 44 has granted access to a particular communicant, thatcommunicant typically uses the functionality provided by the othernetwork infrastructure services to interact in the operating environment40.

The area service 46 hosts a virtual area. In this process, the areaservice 46 manages connections to the virtual area subject to thecapabilities of the requesting entities, maintains global stateinformation for the virtual area, and serves as a data server for thenetwork nodes participating in a shared communication session in acontext defined by the virtual area. The global state informationincludes a list of all the objects that are in the virtual area andtheir respective locations in the virtual area. The area service 46periodically sends the global state information to the participatingnetwork nodes. The area service 46 also registers and transmitsinitialization information to other network nodes that request to jointhe communication session. In this process, the area service 46transmits to each joining network node a copy of a virtual areaspecification, which may be stored in a local or remote database. Thearea service 46 also ensures that the participating network nodes cansynchronize to a global state if a communications fault occurs.

The rendezvous service 48 manages the collection, storage, anddistribution of presence information and provides mechanisms for networknodes to communicate with one another (e.g., by managing thedistribution of connection handles) subject to the capabilities of therequesting entities. The rendezvous service 48 typically stores thepresence information in a presence database.

The interaction service 50 maintains an interaction database thatrecords interactions between communicants and supports queries on theinteraction database subject to the capabilities of the requestingentities. For every interaction of between communicants, one or moreservices in the operating environment 43 (e.g., the area service 46)transmit interaction data to the interaction service 50. In response,the interaction service 50 generates one or more respective interactionrecords in the relationship database. Each interaction record describesthe context of an interaction. For example, in some embodiments, aninteraction record contains an identifier for each of the communicants,an identifier for the place of interaction (e.g., a virtual areainstance), a description of the hierarchy of the interaction place(e.g., a description of how the interaction room relates to a largerarea), start and end times of the interaction, and a list of all filesand other streams shared during the interaction. Thus, for each realtimeinteraction, the interaction service 50 tracks when it occurred, whereit occurred, and what happens during the interaction in terms ofcommunicants involved (e.g., entering and exiting), objects that areactivated/deactivated, and the files that were shared.

The interaction service 50 is able to present the results of queries onthe interaction database records in a sorted order (e.g., most frequentor most recent) based on place. The query results can be used to drive afrequency sort of who a communicant has met in which virtual areas, aswell as sorts of who the communicant has met with regardless of virtualarea and sorts of the virtual areas the communicant frequents mostoften. The query results also may be used by software applicationdevelopers as part of a heuristic system that automates certain tasksbased on relationships. An example of a heuristic of this type is aheuristic that permits communicants who have visited a particularvirtual area more than five times to enter without knocking by default,or a heuristic that allows communicants who were present in an area at aparticular time to modify and delete files created by anothercommunicant who was present in the same area at the same time. Querieson the interaction database can be combined with other searches. Forexample, queries on the interaction database may be combined withqueries on contact history data generated for interactions with contactsusing a communication system (e.g., Skype, Facebook, and Flickr) outsidethe domain of the network infrastructure service environment 43.

3. Virtual Areas

Referring to FIG. 3, in some embodiments, the PRT framework 12administers the realtime connections with network nodes in acommunication context 54 that is defined by an instance 56 of a virtualarea. The virtual area instance 56 may correspond to an abstract virtualspace that is defined with respect to abstract coordinates (e.g.,coordinates that are defined by positions in the associated computerdata file or software application, or In an embodiment in which acustomer service database is an area, each record in the databaseconstitutes a zone). Alternatively, the virtual area instance 56 maycorrespond to a visual virtual space that is defined with respect toone-, two- or three-dimensional geometric coordinates that areassociated with a particular visualization. Abstract virtual areas mayor may not be associated with respective visualizations, whereas visualvirtual areas are associated with respective visualizations.

Communicants typically access the virtual area instance 56 fromrespective network nodes that execute respective computing environmentsthat that can determine movements in the virtual area and establishrealtime data stream connections with other network nodes. Thecommunicants typically are represented by respective avatars in avirtual area that has an associated visualization. The avatars moveabout the virtual area in response to input commands that are input bythe communicants at their respective network nodes. The communicant'sview of a virtual area instance that has an associated visualizationtypically is presented from the perspective of the communicant's avatar,and each communicant typically is able to view any part of the visualvirtual area around his or her avatar, increasing the level of immersionthat is experienced by the communicant.

FIG. 4 shows an embodiment of an exemplary network node that isimplemented by a computer system 60. The computer system 60 includes adisplay monitor 62, a computer mouse 64, a keyboard 66, speakers 68, 70,and a microphone 72. The display monitor 62 displays a graphical userinterface 74. The graphical user interface 74 is a windows-basedgraphical user interface that can include multiple windows, icons, and apointer 76. In the illustrated embodiment, the graphical user interface74 presents a two-dimensional depiction of a shared virtual area 78 thatis associated with a three-dimensional visualization representing an artgallery. Communicants are represented in the virtual area 78 byrespective avatars 80, 82, 84, each of which may have a respective role(e.g., a curator, an artist, and a visitor) in the context of thevirtual area 78.

A s explained in detail below, the virtual area 78 includes zones 86,88, 90, 92, 94 that are associated with respective rules that govern theswitching of realtime data streams between the network nodes that arerepresented by the avatars 80-84 in the virtual area 78. (During atypical communication session, the dashed lines demarcating the zones86-94 in FIG. 4 are not visible to the communicants although there maybe visual cues associated with such zone boundaries.) The switchingrules dictate how local connection processes executing on each of thenetwork nodes establishes communications with the other network nodesbased on the locations of the communicants' avatars 80-84 in the zones86-94 of the virtual area 78.

During a communication session, each of the communicant network nodesgenerates a respective set of realtime data streams (e.g., motion datastreams, audio data streams, chat data stearns, file transfer datastreams, and video data streams). For example, each communicantmanipulates one or more input devices (e.g., the computer mouse 64 andthe keyboard 66) that generate motion data streams, which control themovement of his or her avatar in the virtual area 78. In addition, thecommunicant's voice and other sounds that are generated locally in thevicinity of the computer system 60 are captured by the microphone 72.The microphone 72 generates audio signals that are converted intorealtime audio streams. Respective copies of the audio streams aretransmitted to the other network nodes that are represented by avatarsin the virtual area 78. The sounds that are generated locally at theseother network nodes are converted into realtime audio signals andtransmitted to the computer system 60. The computer system 60 convertsthe audio streams generated by the other network nodes into audiosignals that are rendered by the speakers 68, 70. The motion datastreams and audio streams may be transmitted from each of thecommunicant nodes to the other communicant network nodes either directlyor indirectly. In some stream handling topologies, each of thecommunicant network nodes receives copies of the realtime data streamsthat are transmitted by the other communicant network nodes. In otherstream handling topologies, one or more of the communicant network nodesreceives one or more stream mixes that are derived from realtime datastreams that are sourced (or originated) from other ones of the networknodes.

A virtual area is defined by a specification that includes a descriptionof geometric elements of the virtual area and one or more rules,including switching rules and governance rules. The switching rulesgovern realtime stream connections between the network nodes. Thegovernance rules control a communicant's access to resources, such asthe virtual area itself, regions with the virtual area, and objectswithin the virtual area. In some embodiments, the geometric elements ofthe virtual area are described in accordance with the COLLADA—DigitalAsset Schema Release 1.4.1 Apr. 2006 specification (available fromhttp://www.khronos.org/collada/), and the switching rules are describedin accordance with the COLLADA Streams Reference specification describedin U.S. application Ser. Nos. 11/923,629 and 11/923,634.

The geometric elements of the virtual area typically include physicalgeometry and collision geometry of the virtual area. The physicalgeometry describes the shape of the virtual area. The physical geometrytypically is formed from surfaces of triangles, quadrilaterals, orpolygons. Colors and textures are mapped onto the physical geometry tocreate a more realistic appearance for the virtual area. Lightingeffects may be provided, for example, by painting lights onto the visualgeometry and modifying the texture, color, or intensity near the lights.The collision geometry describes invisible surfaces that determine theways in which objects can move in the virtual area. The collisiongeometry may coincide with the visual geometry, correspond to a simplerapproximation of the visual geometry, or relate to application-specificrequirements of a virtual area designer.

The switching rules typically include a description of conditions forconnecting sources and sinks of realtime data streams in terms ofpositions in the virtual area. Each rule typically includes attributesthat define the realtime data stream type to which the rule applies andthe location or locations in the virtual area where the rule applies. Insome embodiments, each of the rules optionally may include one or moreattributes that specify a required role of the source, a required roleof the sink, a priority level of the stream, and a requested streamhandling topology. In some embodiments, if there are no explicitswitching rules defined for a particular part of the virtual area, oneor more implicit or default switching rules may apply to that part ofthe virtual area. One exemplary default switching rule is a rule thatconnects every source to every compatible sink within an area, subjectto policy rules. Policy rules may apply globally to all connectionsbetween the area clients or only to respective connections withindividual area clients. An example of a policy rule is a proximitypolicy rule that only allows connections of sources with compatiblesinks that are associated with respective objects that are within aprescribed distance (or radius) of each other in the virtual area.

In some embodiments, governance rules are associated with a virtual areato control who has access to the virtual area, who has access to itscontents, what is the scope of that access to the contents of thevirtual area (e.g., what can a user do with the contents), and what arethe follow-on consequences of accessing those contents (e.g., recordkeeping, such as audit logs, and payment requirements). In someembodiments, an entire virtual area or a zone of the virtual area isassociated with a “governance mesh.” In some embodiments, a governancemesh is implemented in a way that is analogous to the implementation ofthe zone mesh described in U.S. application Ser. Nos. 11/923,629 and11/923,634. A governance mesh enables a software application developerto associate governance rules with a virtual area or a zone of a virtualarea. This avoids the need for the creation of individual permissionsfor every file in a virtual area and avoids the need to deal with thecomplexity that potentially could arise when there is a need to treatthe same document differently depending on the context.

In some embodiments, a virtual area is associated with a governance meshthat associates one or more zones of the virtual area with a digitalrights management (DRM) function. The DRM function controls access toone or more of the virtual area or one or more zones within the virtualarea or objects within the virtual area. The DRM function is triggeredevery time a communicant crosses a governance mesh boundary within thevirtual area. The DRM function determines whether the triggering actionis permitted and, if so, what is the scope of the permitted action,whether payment is needed, and whether audit records need to begenerated. In an exemplary implementation of a virtual area, theassociated governance mesh is configured such that if a communicant isable to enter the virtual area he or she is able to perform actions onall the documents that are associated with the virtual area, includingmanipulating the documents, viewing the documents, downloading thedocuments, deleting the documents, modifying the documents andre-uploading the documents. In this way, the virtual area can become arepository for information that was shared and discussed in the contextdefined by the virtual area.

Additional details regarding the specification of a virtual area aredescribed in US Application Nos. 61/042,714 (which was filed on Apr. 4,2008), Ser. No. 11/923,629 (which was filed on Oct. 24, 2007), and Ser.No. 11/923,634 (which was filed on Oct. 24, 2007).

4. Positions in Software Applications and Computer Data Files

Some embodiments of the pervasive realtime framework 12 enable softwareapplication designers to define the semantics of position in a softwareapplication or a computer data file. Through associations withrespective connection rules, these position definitions can be used, forexample, to drive connections to virtual areas, entries into virtualareas, connections to communicants and other sources or sinks ofrealtime data streams, and determinations of presence data relating tocommunicants, network resources, and network services.

As defined above, a computer data file is any block of information thatdurably stores data for use by a software application (e.g., informationused as input, and/or written as output for a software application). Acomputer data file may be designed for use with any type of softwareapplication, including consumer and business software applications, andmay be stored in any type of open or closed data file format. A computerdata file is composed of one or more components whose contents andstructures depend at least in part on the type and purpose of the datastored in the computer data file and on the software used to create it.For example, computer data files for use with desktop publishingsoftware application typically have components that correspond topredefined sections or data categories, such as text arranged insentences, paragraphs, headings and blocks, drawings, tables,rows/columns, pages, drawing sheets, presentation slides, andspreadsheets, or function features, such as security features orauthentication features. A software application developer or an end-usermay define one or more sections of a computer data file that arecomposed of one or more constituent components of the computer datafile. A section may encompass an entire computer data file or a portionof the computer data file, and may overlap another section in whole orin part.

FIG. 5A shows an exemplary computer data file 96 that includes a datafile container 97 that holds a hierarchical arrangement of components A,B, C, D, subcomponents B(1), B(2), and B(3) of component B, andsubcomponents C(1), C(2), and C(3) of component C. The computer datafile 96 is divided into three sections (S1, S2, S3), each of which isassociated with one or more of the components and the subcomponents ofthe computer data file 96. For example, section S1 is associated withsubcomponent B(1), section S2 is associated with component C, andsection S3 is associated with subcomponent B(3) and component C.

The associations between components and sections of a computer data filemay be stored in a variety of different data structure formats. Forexample. FIG. 5B shows an exemplary computer data file sectiondefinition database 98 that contains records that define the sections inthe computer data file 96. The section definition records are indexed bya record identifier and an identifier of the computer data file 96. Insome embodiments, the PRT framework 12 provides functions that allow asoftware application developer to design a software application with oneor more dialog boxes that can be used by the end-user to create recordsin the computer data file section definition database 98.

As defined above, a software application is a set of instructions that acomputer can interpret and execute after the instructions have beenloaded into a storage medium (e.g., hard drive, memory, or random accessmemory). A software application is composed of one or more logicalcomponents (e.g., hardwired, temporal, contextual, table lookupcomponents) or functional components (e.g., functions or entry points)whose contents and structures depend at least in part on thefunctionality of the software application and architecture of itsdesign. For example, some software applications use a componentizedarchitecture that is made up of a number of components, each of whichmay be contained in a separate library and may expose a respective setof interfaces that enable it to be hosted by a main executable. Asoftware application developer may define one or more sections of asoftware application that are composed of one or more components of thesoftware application. A section may encompass an entire softwareapplication or a portion of the software application, and may overlapanother section in whole or in part.

FIG. 6A shows an exemplary software application 99 that includes anapplication container 100 that holds a hierarchical arrangement ofcomponents E, F, subcomponents E(1). E(2), and E(3) of component E,subcomponents F(1), F(2) of component F, subcomponents F(i) and F(ii) ofsubcomponent F(1), and a subcomponent F(iii) of subcomponent F(2). Thesoftware application 100 is divided into six sections (S4, S5, S6, S7,S8, S9) each of which is associated with one or more of the componentsand subcomponents of the software application 99. For example, sectionS4 is associated with subcomponent B(1), section S5 is associated withcomponent F, section S6 is associated with subcomponent F(1), section S7is associated with subcomponent F(2), section S8 is associated withsubcomponents F(ii) and F(iii), and section S9 is associated withsubcomponents E(3) and F(i).

The associations between components and sections of a softwareapplication may be stored in a variety of different data structureformats. For example. FIG. 6B shows an exemplary software applicationsection definition database 102 that contains records that define thesections in the software application 99. The section definition recordsare indexed by a record identifier and an identifier of the softwareapplication 99. In some embodiments, the PRT framework 12 provides oneor more dialog boxes that allow a software application developer tocreate database records in the software application section definitiondatabase 102.

Referring to FIGS. 7A, and 7B, in some embodiments, the one or moresections of a computer data file or a software application areassociated with respective zones of a virtual area.

For example, in some embodiments, the one or more sections of a computerdata file or a software application are associated with respective zonesof an abstract virtual area that is defined with respect to coordinatesin a one-dimensional or multi-dimensional abstract topological spacethat has a one-to-one mapping to positions in the associated computerdata file or software application. For example. FIG. 7A shows anexemplary mapping of the sections S4-S9 of the software application 99to respective coordinates in a two-dimensional topological space thathas coordinates that map directly to respective ones of the componentsand subcomponents of the software application 99.

In other embodiments, the one or more sections of computer data file ora software application are associated with respective zones of one ormore visual virtual areas, each of which may be defined with respect toone-, two- or three-dimensional geometric coordinates that areassociated with a respective visualization. For example, FIG. 7B showsan exemplary mapping of the sections S4-S9 of the software application99 to respective coordinates of two visual virtual areas 104 and 78. Inthis example, section S4 is associated with the visual virtual area 104,which is associated with a three-dimensional visualization of aconference room, and sections S5-S9 are associated with respective zonesof the visual virtual area 78, which is associated with athree-dimensional visualization of an art gallery.

5. Connection Rules

The PRT framework 12 provides functions that enable a softwareapplication developer to incorporate into a software application tools(e.g., dialog boxes and the like) that allow an end-user to associate acomputer data file or a software application with one or more connectionrules. A computer data file or software application can be associatedwith a connection rule in a variety of different ways. In someembodiments, a computer data file is associated with a connection ruleby storing the connection rule or a reference to the connection rule inan attributes database that is managed by a file manager service of theoperating system (e.g., in extended file attributes that can beassociated with the computer data file at the file system level of anoperating system). In some embodiments, a software application isassociated with a connection rule by storing the connection rule or areference to the connection rule in a header of a software applicationfile (e.g., a header or segment that describes how the softwareapplication should be loaded into memory by a program loader service ofan operating system). In some embodiments, a computer data file orsoftware application is associated with a connection rule by storing theconnection rule or a reference to the connection rule in a separatedatabase record that is indexed by an identifier of the computer datafile or software application.

In the illustrated embodiments, computer data files and softwareapplications are associated with instances of reusable connectionobjects each of which encapsulates one or more connection rules and oneor more optional methods. Each connection rule designates at least oneof a virtual area and a connection target, and includes an optional setof one or more connection conditions that influence the establishing ofa network connection, the managing of a network connection, or theprocessing of data transferred across a network connection. The types ofmethods encapsulated in a connection object include, for example, amethod that invokes a function of the PRT framework 12 and a method thatexposes the connection rules, which may be used by the PRT framework 12,the operating system, or may be presented to the user in a graphicalinterface.

The sections of a computer data file or a software application typicallyare associated with instances of respective ones of the connectionobjects by respective records in a connection object associationdatabase that indexes each of the records with an identifier of thecomputer data file or software application and an identifier of theassociated section. FIG. 8 shows an exemplary connection objectassociation database 106 that includes for each section of a computerdata file or software application a respective record that associatesthe section with one or more references (e.g., O1, O2, O3, O4, etc.) toone or more respective connection objects that are indexed in aconnection object database 108.

FIG. 9 shows an embodiment 110 of the connection object database 108that includes for each connection object an exemplary set of possibleattributes (or fields) that are indexed by an Object ID attribute keywhose value corresponds to an identifier of the connection object (e.g.,O1). Among the exemplary attributes that are included in the connectionobject database 108 are an Area Designation attribute, a ConnectionTarget Designation attribute, and a Connection Conditions attribute.

The Area Designation attribute contains an area designation value thatidentifies or can be used to identify an instance of a virtual area. Forexample, the area designation value may correspond to any of a schemaidentifier (e.g., Schema_ID) that identifies a virtual area schema, anarea identifier (e.g., Area_ID) that identifies an instance of a virtualarea, a query on the interaction database that returns identifiers ofvirtual area instances, and a reference to another area (e.g., a virtualarea outside the domain of the associated software application orcomputer data file).

The Connection Target Designation attribute contains one or moreconnection target designations that identify or can be used to identifyone or more connection targets. For example, the connection targetdesignation may include at least one of information identifying a singlecommunicant, information identifying a group of communicants, and adefinition of a role associated with at least one communicant. Theconnection target designation may correspond to identifiers of one ormore specific connection targets (e.g., fixed network resources andspecific communicants) and one or more queries that return identifiersof connect targets. Exemplary queries include a query to the rendezvousservice 48 for any of the connection targets that currently are in aspecified virtual area instance, a query to the rendezvous service 48for specific connection targets that currently are in a specifiedvirtual area instance, a query to the rendezvous service 48 forconnection targets that are associated with one or more attributes(e.g., a particular role attribute value or a particular groupidentifier value), and a query to the interaction service 50 forconnection targets that have interacted with the user and optionally areassociated with one or more other attributes (e.g., connection targetsthat are associated with a specified virtual area instance or aspecified attribute value, such as a particular role attribute value orgroup identifier value).

The Connection Conditions attribute contains one or more connectioncondition definitions that specify one or more connection conditions.Each connection condition specifies one or more parameters thatinfluence the operation of the PRT framework 12 in connecting to avirtual area instance or a connection target designated in theassociated connection rule. For example, a connection target may specifyone or more parameters that influence any of the establishing of anetwork connection, the managing of a network connection, the processingof data transferred across a network connection and the presentation ofconnection-related information to the user.

Some connection conditions describe a predicate on the currentconnection context that should be satisfied before a network connectionis attempted or established. Exemplary conditions of this type include aconnection condition that restricts when the network connection ispermitted, a condition that restricts the establishment of networkconnections to network nodes meeting specified resource requirements, acondition that restricts the establishment of network connections tonetwork nodes meeting specified node configuration requirements, acondition that restricts the establishment of network connections tonetwork nodes meeting specified network node location requirements, anda condition that restricts the establishment of network connections totimes meeting specified connection target availability requirements.

Other connection conditions include conditions on the instantiationbehavior of virtual areas (e.g., a new instance of a virtual area schemashould be instantiated each time a software application is run), andconditions on the way that the results of queries should be handled(e.g., present the results to the user in a graphical interface orautomatically connect to a connection target when only a singleconnection target identified is returned in response to a query).

Depending on the implementation of the operating environment, connectionobjects and their constituent connection rules may be added, modified.or deleted by a variety of different functions and services. Forexample, in some embodiments, a connect rule may be added, modified, ordeleted by a software application developer, a local systemadministrator, an end user, the PRT framework 12, or one or more of thenetwork infrastructure services in the network infrastructure serviceenvironment 43.

IV. System Architecture

A. Overview

1. Introduction

A communicant typically connects to the network 42 (see FIG. 1) from anetwork node, which typically is implemented by a general-purposecomputer system or a dedicated communications computer system (or“console”, such as a network-enabled video game console). The networknode executes communications processes that establish realtime datastream connections with other network nodes and typically executesvisualization rendering processes that present a view of each virtualarea entered by the user. In some embodiments, multiple communicants mayshare a single network node.

FIG. 10 shows an embodiment of a network node that is implemented by acomputer system 120 that includes a processing unit 122, a system memory124, and a system bus 126 that couples the processing unit 122 to thevarious components of the computer system 120. The processing unit 122may include one or more data processors, each of which may be in theform of any one of various commercially available computer processors.The system memory 124 may include a read only memory (ROM) that stores abasic input/output system (BIOS) that contains start-up routines for thecomputer system 120 and a random access memory (RAM). The system bus 126may be a memory bus, a peripheral bus or a local bus, and may becompatible with any of a variety of bus protocols, including PCI, VESA,Microchannel. ISA, and EISA. The computer system 120 also includes apersistent storage memory 128 (e.g., a hard drive, a floppy drive, a CDROM drive, magnetic tape drives, flash memory devices, and digital videodisks) that is connected to the system bus 126 and contains one or morecomputer-readable media disks that provide non-volatile or persistentstorage for data, data structures and computer-executable instructions.

A user may interact (e.g., input commands or data) with the computersystem 120 using one or more input devices 130 (e.g. one or morekeyboards, computer mice, microphones, cameras, joysticks, physicalmotion sensors such Wii input devices, and touch pads). Information maybe presented through a graphical user interface (GUI) that is presentedto the communicant on a display monitor 132, which is controlled by adisplay controller 134. The computer system 120 also may include otherinput/output hardware 136 (e.g., peripheral output devices, such asspeakers and a printer). The computer system 120 connects to othernetwork nodes 138, 140, 142 through a network adapter 138 (also referredto as a “network interface card” or NIC).

A number of program modules may be stored in the system memory 124,including an operating system (OS) 144 (e.g., the Windows XP® operatingsystem available from Microsoft Corporation of Redmond. Wash. U.S.A.),the PRT framework 12, drivers 146 (e.g., a GUI driver), networkprotocols 148, a PRT-aware software application 150, a PRT-unawaresoftware application 152 that connects to the PRT framework 12 through ashim 154, and data (e.g., input data, output data, program data, aregistry 156, and the connection rules 32). In some embodiments, theshim 154 is implemented by an extension module (e.g., a plugin) or amacro.

2. Operating System

The operating system 144 hosts software applications by providing thebase operating system services for creating a run-time executionenvironment on the computer system 120. Among the exemplary types ofservices that typically are provided by the operating system areresource management, file management, security, authentication,verification, notification, and user interfaces (e.g., windowing, menus,dialogs, etc.).

The services relating to the management of the resources (e.g., memory,processors, and I/O devices) of the computer system 120 typically areimplemented by a kernel. File management may be implemented by thekernel or it may be implemented by a separate file system manager (e.g.,the installable file system, which is provided in some Microsoft®Windows® operating systems). In the process of opening a file (e.g., acomputer data file or a software application file), the file systemmanager typically calls an appropriate file system driver that looks upthe disk storage location of the file in a database (e.g., a fileallocation table, such as FAT, FAT98, VFAT, MFT, and CDFS) that maps outthe storages locations of the file on the disk. Other operating systemfunctions, such as security, authentication, verification, notification,and user interfaces, may be provided by one or more other components ofthe operating system (e.g., the executive services layer in someMicrosoft® Windows® operating systems).

Among the exemplary types of services that typically are provided by thekernel are process management, memory management, device management, andsystem call handling. Process management includes running applicationsand providing an application programming interface (API) to hardwarecomponents of the computer system. In the process of running a softwareapplication, the kernel typically sets up an address space in memory forthe software application, loads a file that contains the softwareapplication code into the address space, and executes the loadedsoftware application code. Memory management involves managing softwareapplication accesses to the system memory 124. Device managementinvolves providing access to hardware devices through device drivers.System call handling involves providing an API that exposes the kernelservices to user mode software applications. By invoking the API (e.g.,through inter-process communication mechanisms and system calls), asoftware application can request a service from the kernel, passparameters, and receive results that are generated by the service inresponse to the request.

The operating system 144 typically stores hardware and softwareconfiguration information, user preferences, and setup information inthe registry 156. For example, the registry 156 typically contains thefollowing information: parameters that are needed to boot and configurethe system; system-wide software settings that control the operation ofthe operating system 144: a security database: and per-user profilesettings. In some embodiments, the connection rules 32 are stored in theregistry 156 instead of a separate database.

3. Network Protocols

The network protocols 148 control or enable the connection,communication, and transfer of data between the computer system 120 andother network nodes. Exemplary types of network protocols include theTransmission Control Protocol/Internet Protocol (TCP/IP), the UserDatagram Protocol/Internet Protocol (UDP/IP), and the Realtime TransportProtocol (RTP).

The TCP/IP includes a TCP portion and an IP portion. The TCP portion ofthe protocol provides the transport function by breaking a message intosmaller packets, reassembling the packets at the other end of thecommunication network, and re-sending any packets that get lost alongthe way. The IP portion of the protocol provides the routing function byassigning to the data packets addresses for the destination network andthe target node at the destination network. Each data packet that iscommunicated using TCP/IP includes a header portion that contains theTCP and IP information. The IP provides no guarantee of packet deliveryto the upper layers of the communications stack. The TCP, on the otherhand, provides a connection-oriented, end-to-end transport service withguaranteed, in-sequence packet delivery. In this way, the TCP protocolprovides a reliable, transport layer connection.

The UDP may be used in place of TCP in conditions when a reliabledelivery is not required. For example, UDP/IP may be used for realtimeaudio and video traffic where lost data packets are simply ignoredbecause of any of the following reasons: there is no time to retransmitor any degradation of overall data quality is acceptable.

The RTP defines a standardized packet format for delivering audio andvideo over network connections. A variety of network protocols may beused in transmitting and receiving RTP data between network nodes,including peer-to-peer networking frameworks, a centralized server usingTCP sockets alone or in combination with UDP, and multicast protocols.

4. Device Drivers

The device drivers 146 typically are implemented by softwareapplications that enable other software applications (e.g., user-modesoftware applications and the operating system) to interact withhardware devices that are connected to the computer system 120. A devicedriver typically provides an API for functions that can be invoked bythe other software applications in order to translate commands and datathat are transferred between the software applications and the hardwaredevice.

5. PRT Framework

The PRT framework 12 includes a PRT API and a PRT kernel.

The PRT API exposes high-level functions that significantly reduce theeffort and time needed to develop realtime software applications in anew operating environment paradigm in which realtime connections betweennetwork nodes are pervasive. Some of these functions use position in atleast one of a computer data file and a software application to controlconnections to virtual areas, entries into virtual areas, connections tocommunicants and other sources or sinks of realtime data streams, anddeterminations of presence data relating to communicants and networkresources and services.

The PRT kernel includes services that control the switching of realtimedata streams between the computer system 120 and the other network nodes138, 140, 142. In some embodiments, the PRT kernel also includesprocesses that control the presentation of a respective view of avirtual area and objects in the virtual area on the display monitor 132.In this regard, the PRT kernel interfaces with the operating systemfunctions that communicate with the drivers 148 to translate commandsand data to and from the display controller 134 and the user inputs 130in order to present the views of the virtual area and allow thecommunicant to control interactions in the virtual area.

Implementations of the PRT API and the PRT kernel include one or morediscrete modules or libraries (e.g., dynamic linked libraries) that arenot limited to any particular hardware, firmware, or softwareconfiguration. In general, these modules may be implemented in anycomputing or data processing environment, including in digitalelectronic circuitry (e.g., an application-specific integrated circuit,such as a digital signal processor (DSP)) or in computer hardware,firmware, device driver, or software. In some embodiments, thefunctionalities of the modules are combined into a single dataprocessing component. In some embodiments, the respectivefunctionalities of each of one or more of the modules are performed by arespective set of multiple data processing components. In someimplementations, process instructions (e.g., computer-readable code,such as computer software) for implementing the methods that areexecuted by the embodiments of the PRT API and the PRT kernel, as wellas the data they generate, are stored in one or more computer-readablemedia. Storage devices suitable for tangibly embodying theseinstructions and data include all forms of non-volatilecomputer-readable memory, including, for example, semiconductor memorydevices, such as EPROM, EEPROM, and flash memory devices, magnetic diskssuch as internal hard disks and removable hard disks, magneto-opticaldisks, DVD-ROM/RAM, and CD-ROM/RAM.

6. Exemplary System Level Functionality

The PRT framework 12 cooperates with the network infrastructure serviceenvironment 43 in the administration of the network connections betweenthe computer system 120 and the other network nodes 138, 140, 142. Amongthe exemplary system level functionalities that are involved in theprocess of administering network connections are logging into thenetwork infrastructure service environment 43 and executing connectionrule based PRT framework operations, including determining instances ofvirtual areas and ascertaining connection targets via at least one ofthe rendezvous service 48 and the area service 46.

a. Logging into the Network Infrastructure Service Environment

In some embodiments, authentication with the network infrastructureservice environment 43 is performed once each time the PRT framework 12is launched. The authentication process typically is based on acredential that is securely issued to the user at the time the PRTframework 12 is installed on the computer system 120. The credentialtypically is a certificate that is signed by a certificate authority.The certificate contains a private key and a public key. The PRTframework 12 creates a new credential that contains only the public keyand securely stores the private key on the computer system 120. Thecomputer PRI framework 12 creates a signature using the private key toencrypt a digest of a user-supplied password, and transmits thesignature to the security service 44. The security service 44 recoversthe digest and stores it as the user's identifying secret.

FIG. 11 shows an embodiment of a method in which the PRT framework 12logs into the network infrastructure service environment 43 after thesecurity service 44 has received the user's identifying secret. Inaccordance with this method, the PRT framework 12 establishes a sessionwith the security service 44 and sends the user's credential to thesecurity service 44 (FIG. 11, block 160). The security serviceauthenticates the credential received from the PRT framework 12 (FIG.11, block 162). If the user's credential is authenticated, the securityservice sends an authentication token to the PRT framework 12:otherwise, the security service notifies the PRT framework 12 that theauthentication failed (FIG. 11, block 164). If the authentication failed(FIG. 11, block 166), the PRT framework 12 notifies the user and thelog-in process stops (FIG. 11, block 168). If the authentication of theuser's credential is successful (FIG. 11, block 166), the PRT framework12 validates the token received from the security service 44 (FIG. 11,block 170). If the token is valid (FIG. 11, block 170), the PRTframework waits for an invocation of the PRT API by a softwareapplication or an operating system call before proceeding (FIG. 11,block 172). After it has been verified, the security service token canbe to authenticate the user to any of the network infrastructureservices. In some embodiments, the PRT framework 12 may performbackground tasks (e.g., caching interaction data and other resources soas to increase the responsiveness of the PRT framework 12 inadministering connections and performing other tasks) while waiting foran invocation of the PRT API.

b. Connection Rule Based PRT Framework Operations

i. Overview

A connection rule can be associated with a definition of at least onerespective section in an interaction space that is defined with respectto at least one of the software application and the computer data file.The PRT framework can determine the connection rule based at least inpart on the current focus in relation to the at least one section in theinteraction space and then initiate the transfer of one or more realtimedata streams with one or more of the network nodes in accordance withthe connection rule. In these embodiments, the PRT framework 12 isinvoked with a PRT API call that typically includes a definition ofposition in at least one of a software application and a computer datafile. The definition of position may be provided by, for example, aPRT-aware software application that determines a current focus of a userwith respect to the interaction space defined by at least one of thesoftware application and the computer data file. Alternatively, thedefinition of position may be provided by an operating system service(e.g., a program loader service or a file manager service) thatdetermines the position definition from metadata that is associated withat least one of the software application and the computer data file(e.g., in the header of the software application file or in a fileattributes database associated with the computer data file) or from auser interface service of the operating system that controls thewindowing environment.

FIG. 12 shows an embodiment of a method that is implemented by the PRTframework 12 in response to a PRT API that includes a definition ofposition in at least one of a software application and a computer datafile.

In accordance with this method, the PRT framework 12 retrieves one ormore connection rules that are associated with at least one of thesoftware application and the computer data file (FIG. 12, block 174). Insome embodiments, the PRT framework 12 queries the connection objectassociation database 106 (see FIG. 8) for the identifiers of at leastone connection object that is associated with the section of thesoftware application or computer data file that correspond to theposition definition contained in the PRT API call. The PRT framework 12retrieves the connection object that corresponds to the connectionobject identifier from the connection object database 108 (see FIG. 8),and determines at least one connection rule that is defined in theconnection object.

As explained above, a connection rule designates at least one of avirtual area and a connection target, and may include one or moreoptional connection conditions that guide the behavior of a suitablyconfigured software application or service in administering networkconnections. If a virtual area is designated in the connection rule, thePRT framework 12 determines a virtual area instance based on the virtualarea designation (FIG. 12, block 176). The PRT framework 12 ascertainsone or more connection targets in accordance with the connection rules(FIG. 12, block 178). For example, the connection targets may beascertained through their designation in the connection rules or throughtheir associations with the virtual area instance (e.g., the ascertainedconnection targets are those targets that are associated with objectsthat currently are in the virtual area instance). If the connection ruledesignates one or more connection targets without designating a virtualarea, the PRT framework 12 typically ascertains the connection targetsvia the rendezvous service 48. If the connection rule designates avirtual area, the PRT framework 12 typically ascertains the connectiontargets via one or both of the area service 46 and the rendezvousservice 48.

After the connection targets have been ascertained, the PRT framework 12initiates respective realtime data stream connections with one or moreof the connection targets (FIG. 12, block 180).

ii. Ascertaining Connection Targets Via the Rendezvous Service

FIG. 13 shows an embodiment of a method that is implemented by the PRTframework 12 in the process of connecting to a connection target throughthe rendezvous service 48.

In accordance with the method of FIG. 13, the PRT framework 12 resolvesa designation of at least one connection target in the connection ruleto at least one respective node connection handle (FIG. 13, block 182).In this process, the PRT framework 12 authenticates the user to therendezvous service 48 with the token received from the security service44. After the user has been authenticated, the PRT framework 12establishes a session with the rendezvous service 48. The PRT framework12 then transmits to the rendezvous service 48 a request for arespective connection handle for each connection target corresponding tothe connection target designation in the connection rule.

The rendezvous service 48 identifies the one or more connection targetsthat correspond to the connection target designation. If the connectionrule designates specific connection targets with target identifiers, therendezvous service 48 queries the presence database for the states andcapability requirements of connection targets corresponding to thedesignated target identifiers. If the connection rule designatesconnection targets with a set of one or more attribute values, therendezvous service 48 queries the presence database for the states andcapability requirements that are associated with connection targetshaving attribute values that match the designated attribute values. Therendezvous service 48 compares the capabilities of the user with thecapability requirements associated with each of the identifiedconnection targets. The rendezvous service 48 transmits to the PRTframework 12 the respective connection handle of each of the identifiedconnection targets whose capability requirements are satisfied.

After receiving the query results from the rendezvous service 48, thePRT framework 12 determines the applicability of any connectionconditions that are contained in the connection rule. For example, theconnection rule can include conditions on the way that the query resultsreturned by the rendezvous service 48 should be handled. For example, aconnection condition may specify that the PRT framework 12 shouldpresent the results to the user in a graphical interface so that theuser can select the one or more of the matching connection targets withwhich he or she would like to communicate. In another example, aconnection condition may specify that the PRT framework 12 shouldautomatically connect to the connection targets whose connection handlesare returned in the query results. The connection rule also can includeconnection conditions that describe a predicate on the currentconnection context that should be satisfied before a network connectionis made. Exemplary conditions of this type include a connectioncondition that restricts when the network connection is permitted, acondition that restricts the establishment of network connections tonetwork nodes meeting specified resource requirements, a condition thatrestricts the establishment of network connections to network nodesmeeting specified node configuration requirements, a condition thatrestricts the establishment of network connections to network nodesmeeting specified network node location requirements, and a conditionthat restricts the establishment of network connections to times meetingspecified connection target availability requirements.

Referring back to FIG. 13, after resolving the connection targetdesignation to at least one respective connection handle (FIG. 13, block182), the PRT framework 12 initiates transfer of at least one realtimedata stream over at least one network connection with a network nodethat is associated with the connection handle subject to any applicableconnection conditions that are specified in the connection rule (FIG.13, block 184). As explained above, the connections between the PRTframework 12 and the other network nodes may be peer-to-peer connectionsor server-mediated connections. With respect to a peer-to-peerconnection, the connection target network node and the PRT framework 12typically authenticate one another, and then establish a link over whichto transmit the at least one realtime data stream either to or from theconnection target. Links typically are one-way and requested by thetransmitter and accepted or rejected by the receiver.

iii. Ascertaining Connection Targets Via the Area Service

FIG. 14 shows an embodiment of a method that is implemented by the PRTframework 12 in the process of connecting to a virtual area through thearea service 46.

In accordance with the method of FIG. 14, the PRT framework 12determines an instance of a virtual area based on a designation of thevirtual area in the connection rule (FIG. 14, block 186). In thisprocess, the PRT framework 12 authenticates the user to the area service46 with the token that the user received from the security service 44.After the user has been authenticated, the PRT framework 12 establishesa session with the area service 46. The PRT framework 12 then transmitsto the area service 46 a request to connect to an instance of thevirtual area designated in the connection rule.

The area service 46 determines an instance of the virtual area thatcorresponds to the virtual area designation in the connection rule. Thisprocess typically depends on the way in which the virtual area isdesignated (e.g., by schema identifier, virtual area instanceidentifier, or by one or more query attributes).

If the connection rule designates the virtual area by reference to aschema identifier, the area service 46 retrieves the schemacorresponding to the schema identifier and creates an instance of theretrieved schema with an associated virtual area instance identifier. Ifthe user's capabilities satisfy the capability requirements associatedwith the virtual area instance, the area service 46 returnsconfiguration data to the PRT framework 12. The configuration datatypically includes a definition of the virtual area instance and aregister of the objects currently in the virtual area instance.

If the connection rule designates the virtual area by reference to aninstance identifier, the area service 46 determines the state of theidentified virtual area instance. If the virtual area instance isavailable (e.g., currently running) and the user's capabilities satisfythe capability requirements associated with the virtual area instance,the area service 46 returns configuration data to the PRT framework 12,where the configuration data typically includes a definition of thevirtual area instance and a register of the objects currently in thevirtual area instance. If the virtual area instance is unavailable(e.g., the virtual area instance currently is not running or connectaccept any new communicants) but the user's capabilities satisfy thecapability requirements associated with the virtual area instance, thearea service 46 may create a new instance of the virtual area based onthe schema for the original instance and return configuration data tothe PRT framework 12, where the configuration data typically includes adefinition of the new virtual area instance and a register of theobjects currently in the new virtual area instance.

If the connection rule designates the virtual area with a set of one ormore query attribute values, the area service 46 transmits a request tothe interaction service 50 to query the interaction database for allvirtual area instances that have attributes matching the designatedattribute values. The area service 46 determines the states andcapability requirements that are associated with the virtual areainstances that are identified in the query results returned by theinteraction service 50. The area service 46 transmits to the PRTframework 12 the respective identifiers of each of the identifiedvirtual area instances whose capability requirements are satisfied.After receiving the query results from the area service 46, the PRTframework 12 determines the applicability of any connection conditionsthat are contained in the connection rule. For example, the connectionrule can include conditions on the way that the query results that arereturned by the area service 46 should be handled. For example, aconnection condition may specify that the PRT framework 12 shouldpresent the results to the user in a graphical interface so that theuser can select which of the matching virtual area instances he or shewould like to enter. In another example, a connection condition mayspecify that the PRT framework 12 should automatically enter the userinto one of the virtual area instances based on a specified criterion(e.g., most frequently visited).

Referring back to FIG. 14, after determining the virtual area instance(FIG. 14, block 186), the PRT framework 12 ascertains one or oatenetwork nodes that are associated with the instance of the virtual area(FIG. 14, block 188). In this process, the PRT framework 12 reads theobjects register that was received from the area service 46 in order todetermine the network nodes that are associated with objects thatcurrently are in the virtual area instance. In some embodiments, the PRTframework 12 also ascertains the network nodes associated withconnection targets designated in the connection rule via the rendezvousservice 48, as described in the preceding section.

The PRT framework 12 initiates transfer of at least one realtime datastream over at least one network connection with at least one of theascertained network nodes in a context defined by the instance of thevirtual area (FIG. 14, block 190). The connections between the PRTframework 12 and the other network nodes may be peer-to-peer connectionsor server-mediated connections. With respect to a peer-to-peerconnection, the connection target network node and the PRT framework 12typically authenticate one another, and then establish a link over whichto transmit the at least one realtime data stream either to or from theconnection target. Links typically are one-way and requested by thetransmitter and accepted or rejected by the receiver.

As explained above, the initiation of each realtime data streamconnection is subject to any applicable connection conditions that arespecified in the connection rule. For example, the connection rule caninclude connection conditions that describe a predicate on the currentconnection context that should be satisfied before a network connectionis made. Exemplary conditions of this type include a connectioncondition that restricts when the network connection is permitted, acondition that restricts the establishment of network connections tonetwork nodes meeting specified resource requirements, a condition thatrestricts the establishment of network connections to network nodesmeeting specified node configuration requirements, a condition thatrestricts the establishment of network connections to network nodesmeeting specified network node location requirements, and a conditionthat restricts the establishment of network connections to times meetingspecified connection target availability requirements.

B. Exemplary System Architecture Embodiment

1. Introduction

FIG. 15 shows an embodiment of the operating environment of FIG. 10 thatincludes an embodiment 200 of the computer system 120, and an embodiment202 of the network node 140.

The network node 202 (Node C) hosts the area service 46. The areaservice 46 maintains global state information and the network node 202serves as a data server for the network nodes 200, 138, 142. Among theglobal state information that is maintained by the area service 46 are acurrent specification 204 of the virtual area, a current register 206 ofthe objects that are in the virtual area, and a list 208 of any streammixes that currently are being generated by the network node 202.

The objects register 206 typically includes for each object in thevirtual area a respective object identifier (e.g., a label that uniquelyidentifies the object), a connection handle (e.g., a URI, such as an IPaddress) that enables a network connection to be established with anetwork node that is associated with the object, and interface data thatidentifies the realtime data sources and sinks that are associated withthe object (e.g., the sources and sinks of the network node that isassociated with the object). The objects register 206 also typicallyincludes for each object one or more optional role identifiers, whichmay be assigned explicitly to the objects by either the communicants orthe area service 46, or may be inferred from other attributes of theobjects. In some embodiments, the objects register 206 also includes thecurrent position of each of the objects in the virtual area asdetermined by the area service 46 from an analysis of the realtimemotion data streams received from the network nodes associated withobjects in the virtual area. In this regard, the area service 46receives realtime motion data streams from the network nodes that areassociated with objects in the virtual area, tracks the communicants'avatars and other objects that enter, leave, and move around in thevirtual area based on the motion data. The area service 46 updates theobjects register 206 in accordance with the current locations of thetracked objects.

The computer system 200 includes an embodiment 210 of the PRT framework12. Among other functions, the PRT framework 210 administers realtimedata stream connections with other network nodes. In this process, thePRT framework 210 maintains a set of configuration data, includinginterface data 212, a zone list 214, and the positions 216 of theobjects that currently are in the virtual area. The interface data 212includes for each object that is associated with the computer system 200a respective list of all the sources and sinks of realtime data streamtypes that are associated with the object. The zone list 214 is aregister of all the zones in the virtual area that currently areoccupied by the avatar associated with the computer system 200. When theuser first enters a virtual area, the PRT framework 210 typicallyinitializes the current object positions database 216 with positioninitialization information that is downloaded from the network node 202.Thereafter, the PRT framework 210 updates the current object positionsdatabase 216 with the current positions of the objects in the virtualarea as determined from an analysis of the realtime motion data streamsreceived from, for example, one or more of the computer mouse 218 andthe network nodes 138, 202, 142. The configuration data that ismaintained by the PRT framework 210 also includes copies 220, 222, 224of the objects register 206, the stream mix list 208, and the virtualarea specification 204, respectively; these copies 220, 220, and 222typically are downloaded from the area service 46 and represent a localcache of these data. In some embodiments, the object positions 216 areincorporated into the objects register 220.

2. Operating System

FIG. 16 shows an embodiment 230 of the operating system 144.

The operating system 230 includes an OS API 234 and an OS kernel 236.The OS API 234 exposes the functions provided by the operating system230, including a file manager service 238, a user interface service 240,and the functions provided by the services of the OS kernel 236. Thefile manager service 238 manages the storing and the retrieving filesand metadata (e.g., file attributes) that are associated with computerdata files and software application files. The user interface service240 manages the windowing environment, including the presentation ofdialog boxes and graphics on the display 132. In the illustrativeembodiment shown in FIG. 16, the OS kernel 236 includes a program loaderservice 242, a device manager service 244, and a memory manager service246. The program loader service 242 manages the execution of softwareapplications (e.g., loading at least one executable of the softwareapplication into memory, preparing the executable for execution, andexecuting the prepared executable). The device manager service 244manages access to hardware devices through device drivers. The memorymanager service 246 manages accesses to the computer system memory 124and the persistent storage memory 128.

3. PRT Framework

a. Introduction

FIG. 16 also shows an embodiment 232 of the PRT framework 12.

The PRT framework 232 includes a PRT API 250, a set of PRT non-kernelservices, and a PRT kernel 252 that includes a set of PRT kernelservices. The PRT API 250 exposes all the services provided by the PRTframework 232. The PRT non-kernel services include a connection objectmanager service 253, an area connect service 254, an area entry service255, a target connect service 256, and an export presence service 260.In the process of carrying out their respective functionalities, the PRTnon-kernel services 254-260 are able to invoke the services of the PRTkernel 252 and the operating system 230 as needed. The PRT kernelservices include a logon manager service 262, a session manager service264, a stream switching service 266, stream handler services 268, arealtime scheduler service 270, a visualization engine service 272, anda bandwidth monitor service 274. In performing their respectivefunctions, the PRT kernel services 262-274 also are able to invoke theservices of the operating system 250. Implementations of at least someof the services 254-274 involve integrating traditional operating systemfunctions (e.g., process management functions, file managementfunctions, memory management functions, storage management function,device management functions, and network management functions) withrealtime functions (e.g., realtime scheduling functions, realtimeconnection functions, and realtime data stream handling functions) thatare provided by the kernel. In this way, realtime primitives andtraditional operating system primitives are exposed to softwareapplication developers in a peer relationship.

b. PRT Kernel Services

Each time the PRT framework 232 is launched (typically when the computersystem 200 starts), the log-on manager service 262 implements processesfor logging into the network infrastructure service environment 4:3. Insome embodiments, the log-on manager service 262 performs the functionsof logging into the network infrastructure service environment 43through the security service 44, as described above in connection withFIG. 1. The logon manager service 262 also typically handles signing outof the network infrastructure service environment 43.

The session manager service 264 manages sessions between the computersystem 120 and target ones of the other network nodes. In response to aninvocation of the session manager service 264 (either through aninter-process communication mechanism or a system call), the sessionmanager service 264 negotiates a link with the target network node. Inthis process, the session manager service 264 typically authenticatesthe user to the target network node (e.g., based on the security tokenreceived from the security service 44), negotiates a stream transportprotocol, and negotiates a stream encryption mechanism. The transmissionof messages between the session manager service 264 and the targetnetwork node may be performed in accordance with a variety of differentmessaging paradigms. In some embodiments, messages are exchangedasynchronously in accordance with a publish/subscribe model in whichmessages are segmented into classes, subscribers express interest in oneor more message classes, and publishers only transmit messagescorresponding to the subscribed classes. In some embodiments, thesession manager service 264 also may provide connection recoverymechanisms for re-establishing connections that terminate improperly.

The stream switching service 266 manages the switching of networkconnections in accordance with the switching rules that are defined by avirtual area. The stream switching service 266 handles the entry intoand exit out of a virtual area by avatars and any other objects that areassociated with the computer system 200. The stream switching service266 also automatically determines how to switch (e.g., route, connectand disconnect) realtime data streams between the computer system 200and the other network nodes 138, 202, 142. The stream switching service266 makes these determinations based on the switching rules contained inthe virtual area specification, the current locations of the avatars andother objects in the virtual area, and the realtime data stream typesthat are associated with the avatars and other objects in the virtualarea. In some embodiments, the stream switching service 266 also factorsinto these determinations upload and download bandwidth constraints ofany of the computer system 200 (as determined by the bandwidth monitorservice 274) and the other network nodes 138, 202, 142. In addition, thestream switching service 266 re-evaluates the current set of connectionseither in response to events (e.g., upload or download bandwidth faults,and requests to enter or exit a virtual area), periodically, or both inresponse to events and periodically. As a result of the re-evaluation ofthe current connections, the stream switching service 266 may, forexample, take any of the following actions: request stream mixes fromthe network node 202, drop stream mixes from the network node 202, breakone or more direct links with one or more of the other network nodes138, 142, or form one or more direct links with one or more of the othernetwork nodes 138, 142.

The stream handler services 268 include a respective stream handlerservice for processing each type of realtime data stream (e.g., motiondata streams, audio data streams, chat data streams, file transfer datastreams, and video data streams) that are transferred between thecomputer system 200 and other network nodes. The realtime data streamprocessing typically includes applying transforms on the realtime datastream. In some embodiments, when the realtime data streams are beingprocessed in the context of a shared virtual area, the stream handlerservices 268 process the realtime data streams in accordance with astream processing configuration that is defined by the virtual areaspecification. In some embodiments, one or more of the stream handlerservices 268 includes a manager that assembles a set of streamprocessing objects into a directed graph in accordance with the streamprocessing configuration defined by the virtual area specification.

Some embodiments include a chat stream handler service that provides aninterface for outgoing text messages that are received from a local textinput device (e.g., a keyboard) of the computer system 200 and aninterface for incoming chat streams that are received from the othernetwork nodes 138, 202, 142. The chat stream handler service processesthe text messages that are input by the communicant through the textinput device into realtime chat streams and passes the realtime chatstreams to the device manager service 244, which translates the chatstreams into a format that can be transmitted over the network 42 to theother network nodes 138, 202, 142. The chat stream handler service alsoprocesses the incoming text streams and passes the processed textstreams to the device manager service 244, which translates the textstreams into signals that can be rendered on the display monitor 132.

Some embodiments include an audio stream handler service that processesincoming audio signals that are received from the other network nodes138, 202, 142. The audio stream handler service passes the processedincoming audio signals to the device manager service 244, whichtranslates the audio signals into a format that can be rendered by thespeakers 278, 280 in the communicant's headset 282. The audio streamhandler service also processes the outgoing audio signals that aregenerated by the microphone 284 in the headset 282. The audio streamhandler service passes the processed outgoing audio signals to thedevice manager service 244, which translates the audio signals into aformat that can be transmitted over the network 42 to the other networknodes 138, 202, 142.

Some embodiments include a video stream handler service that processesincoming video signals that are received from the other network nodes138, 202, 142. The video stream handler service passes the processedincoming video signals to the device manager service 244, whichtranslates the video signals into a format that can be rendered by thedisplay 132 and the speakers 278, 280 in the communicant's headset 282.The video stream handler service also processes the outgoing videosignals that are generated by, for example, a local camera attached tothe computer system 200. The video stream handler service passes theprocessed outgoing video signals to the device manager service 244,which translates the video signals into a format that can be transmittedover the network 42 to the other network nodes 138, 202, 142.

Some embodiments include a motion data stream handler service thatprocesses incoming motion data signals that are received from the othernetwork nodes 138, 202, 142. The motion data stream handler servicepasses the processed incoming motion data signals to the visualizationengine service 272. The visualization engine service 272 utilizes themotion data signals to update the presentation of a shared virtual areacommunication session on the display 132. The motion data stream handlerservice also processes the outgoing motion data signals that aregenerated by the user input devices. The motion data stream handlerservice passes the processed outgoing motion data signals to the devicemanager service 244, which translates the motion data signals into aformat that can be transmitted over the network 42 to the other networknodes 138, 202, 142.

Some embodiments include a file transfer stream handler service thatprocesses file signals that are received from the other network nodes138, 202, 142. The file transfer stream handler service passes theprocessed file signals to the memory manager service 246, whichtranslates the file signals into a format that can be stored in apersistent storage memory 128. The file stream handler service alsoinvokes the memory manager service 246 to retrieve a computer data filefrom the persistent storage memory 128, processes the computer data fileinto a file signal stream, and passes the processed file signal to thedevice manager service 244, which translates the file signals into aformat that can be transmitted over the network 42 to the other networknodes 138, 202, 142.

The visualization engine service 272 presents on the display monitor 132a view of the virtual area and any objects that are in the virtual area.In this process, the visualization engine service 272 reads the virtualarea specification data 224, the objects register 220, and the currentobject positions database 216. In some embodiments, the visualizationengine service 272 also reads a communicant avatar database 248 thatcontains images needed for rendering the communicant's avatar in thevirtual area. Based on this information, the visualization engineservice 272 generates a one-, two- or three-dimensional representation(i.e., an image) of the virtual area and the objects in the virtual areafrom the point of view (position and orientation) of the communicant'savatar in the virtual area. The visualization engine service 272 thenpasses the representation of the virtual area to the device managerservice 244 of the operating system 230, which controls the rendering ofthe images of the virtual area on the display monitor 132. In someembodiments, the visualization engine service 272 determines thevisibility of the communicant's avatar in order to limit the amount ofdata that has to be exchanged, processed and rendered to the portion ofthe virtual area that is visible on the display monitor 132.

The user can control the presented view of the virtual area or theposition of the avatar in the virtual area by transmitting commands tothe user interface service 240 of the operating system 230 from an inputdevice (e.g., the computer mouse 218). The visualization engine service272 updates the view of the virtual area and the positions of theobjects in the virtual area in accordance with updated positions in thecurrent object positions database 216 and re-renders an updated versionof the graphic representation of the virtual area for rendering on thedisplay monitor 132. The visualization engine service 272 may update therendered image periodically or only in response to movement of one ormore of the objects in the virtual area.

The realtime scheduler service 270 manages the scheduling of tasks thatare performed by the other PRI kernel services (e.g., the stream handlerservices) in an effort to achieve realtime performance. For example, insome embodiments the realtime scheduler service 270 schedules tasksbased at least in part on a comparison between processing performanceand a performance target. In some embodiments, the realtime schedulerservice 270 is implemented by a kernel mode or driver process thatmanages the execution of PRT framework tasks. In some embodiments, therealtime scheduler service 270 additionally manages the execution ofoperating system tasks (e.g., scheduling and memory management) andsynchronization primitives (e.g., semaphores and signal and messagepassing mechanisms) in a way that provides deterministic execution andblocking times.

In some embodiments, the realtime scheduler service 270 multiplexes theresources of the computer system 200 among one or more executingsoftware applications based on their respective resource requirements inaccordance with a priority based or proportional sharing basedscheduling model. In these embodiments, each resource typically isassociated with a respective scheduler that controls the order in whichtasks access the resource. Exemplary schedulers of this type include aprocessor scheduler that multiplexes access to the one or moreprocessors in the processing unit 122, a memory scheduler thatmultiplexes the bandwidth of the persistent storage memory 128, and anetwork scheduler that multiplexes the link bandwidth of the networkadapter 138. A global scheduler typically sets the policies of theindividual schedulers.

In some embodiments, the realtime scheduler service 270 is implementedby a best-effort realtime scheduling process that tries its best to meetrealtime software application deadlines but does not guarantee that therealtime software applications will meet these deadlines. In some ofthese embodiments, the realtime scheduler service 270 operates as auser-mode process that obtains a high-priority thread and attempts toguarantee a specified processing rate (e.g., a target frame rate) by oneor more of the stream hander services 268. In some of these embodiments,the realtime scheduler service 270 monitors the performance of at leastone processing task performed by one of the stream handler services 268and schedules that processing tasks based at least in part on themeasured performance in relation to a fixed or adaptive performancetarget. For example, the realtime scheduler service 270 may adaptivelymodify the configuration of the monitored stream handler service inorder to meet a target frame rate of data delivered to a device driver(e.g., an audio driver).

c. PRT Non-Kernel Services

In the illustrative embodiment shown in FIG. 16, the non-kernel servicesof the PRT framework 232 include the connection object manager service253, the area connect service 254, the area entry service 255, thetarget connect service 256, and the export presence service 260. Theconnection object manager service 253 provides functions for managingconnection objects and instantiating connection objects in response toPRT API calls. The area connect service 254 provides functions forconnecting to a virtual area. The area entry service 255 providesfunctions for entering a virtual area. The target connect service 256provides functions for connecting to a connection target. The exportpresence service 260 provides functions for exporting presenceinformation to other network nodes. Each of the PRT non-kernel servicestypically can be invoked by calls from any of software applications,other PRT framework services, and operating system services.

The functions that are provided by the non-kernel services of the PRTframework 232 are described in the following sections.

i. Managing Connection Objects

The connection object manager service 253 provides functions formanaging connection objects, including adding connection objects,modifying connection objects, and deleting connection objects. In thisregard, the connection object manager service 253 responds to someconnection object management related software application calls to thePRT API 250 by invoking the user interface service 240 of the operatingsystem 230 to create dialog boxes and the like that allow a user (e.g.,a communicant or a local system administrator) to add, modify, anddelete connection objects and their respective associations withcomputer data files and software applications.

In some embodiments, a software application may include tools that allowa user to manage connection objects that are associated with sections ofa computer data file (e.g., a document file produced by a desktoppublishing software application) or a software application. These toolsmay include a command for associating a new connection object instancewith the computer data file or the software application, a command formodifying a connection object instance that associated with the computerdata file or the software application, and a command for deleting aconnection object instance that is associated with the computer datafile or the software application.

In response to selection of the command to associate a new connectionobject instance with a section of the computer data file or the softwareapplication (e.g., the section that corresponds to the current focus ofattention of the user), the software application makes a call to the PRTAPI 250 that invokes the connection object manager service 253. Theconnection object manager service 253 instantiates a new connectionobject instance and associates it with the designated section of thecomputer data file or the software application by creating in theconnection object association database a record that is indexed by anidentifier of the designed section and an identifier of the computerdata file or the software application. The connection object may be aninstance of a default connection object that is associated with thecalling software application or the computer data file or it may be aspecific connection object that is designated in the PRT API call. Afterinstantiating the new connection object instance, the connection objectmanager service 253 invokes the user interface service 240 to create adialog box that allows the user to specify values for the attributes ofthe connection object instance.

In response to selection of the command to modify a connection objectinstance that is associated with a section of the computer data file orthe software application (e.g., the section that corresponds to thecurrent focus of attention of the user), the software application makesa call to the PRT API 250 that invokes the connection object managerservice 253. The connection object manager service 253 queries theconnection object association database that associates each section ofthe computer data file or the software application with at least onerespective connection object instance. The query returns a connectionobject instance identifier. The connection object manager service 253instantiates the connection object instance corresponding to theconnection object identifier. After instantiating the connection objectinstance, the connection object manager service 253 invokes the userinterface service 240 to create a dialog box that allows the user toadd, modify or delete values for the attributes of the connection objectinstance.

In response to selection of the command to delete a connection objectinstance that is associated with a section of the computer data file orthe software application (e.g., the section that corresponds to thecurrent focus of attention of the user), the software application makesa call to the PRT API 250 that invokes the connection object managerservice 253. The connection object manager service 253 queries theconnection object association database that associates each section ofthe computer data file or the software application with at least onerespective connection object instance. The query returns a connectionobject identifier corresponding to a connection object instance that isassociated with the section of the computer data file or the softwareapplication. The connection object manager service 253 invokes the userinterface service 240 to create a dialog box that confirms the user'sintention to delete the identified connection object instance.

ii. Handling PRT API Calls for Realtime Connections based on Position ina Computer Data File or a Software Application

The connection object manager service 253 also typically handles theinitial PRT API calls from software applications and operating systemservices (e.g., the program loader service 242 and the file managerservice 238) that contain a designated position in a computer data fileor a software application. In this process, the connection objectmanager service 253 queries the connection object association databasethat associates each section of the computer data file or the softwareapplication with at least one respective connection object instance. Thequery returns a connection object identifier corresponding to aconnection object instance that is associated with the position in thecomputer data file or the software application that is designated in thePRT API call. The connection object manager service 253 instantiates theconnection object instance corresponding to the connection objectidentifier. After instantiating the connection object instance, theconnection object manager service 253 invokes one or more of the otherPRT services that establishes a connection to a virtual area or aconnection target in accordance with the attribute values of theinstantiated connection object instance.

iii. Connecting to a Virtual Area

FIG. 17 shows an embodiment of a method that is implemented by the areaconnect service 254 of the PRT framework 232 in response to a PRT APIcall requesting a connection to a virtual area.

In accordance with the method of FIG. 17, the area connect service 254determines a designation of a virtual area (FIG. 17, block 290). In someembodiments, the area connect service 254 is invoked by any of asoftware application, an operating system service, and a PRI frameworkservice with a PRT API call that includes a virtual area designation,for example, the connection object manager service 253 may invoke thearea connect service 254 with a PRT API call that includes a virtualarea designation that the connection object manager service 253extracted from an instance of a connection object that is associatedwith a computer data file or a software application.

The area connect service 254 establishes a session with a networkinfrastructure service that hosts the designated virtual area (FIG. 17,block 292). In this process, the area connect service 254 invokes thesession manager service 264 to establish a session with the area service46 in the manner described above. The area connect service 254 thentransmits to the area service 46 a request to connect to the designatedvirtual area. The area service 46 determines an instance of the virtualarea that is designated in the request received from the area connectservice 254. As explained above, this process typically depends on theway in which the virtual area is designated (e.g., by schema identifier,virtual area instance identifier, or by one or more query attributes).After determining the instance of the virtual area instance, the areaservice 46 determines if the user's capabilities satisfy the capabilityrequirements associated with the virtual area instance. If the user'scapabilities meet the capability requirements, the area service 46transmits a message indicating the availability of state data thatdescribes a current state of the virtual area instance (e.g., a list ofthe objects currently in the virtual area instance, along with the namesof communicants associated with those objects).

The area connect service 2554 subscribes to state data (FIG. 17, block294). In response to the subscription request, the area servicepublishes the state data to a channel on the link between the sessionmanager service 264 and the area service 46.

The area connect service 254 invokes the user interface service 240 ofthe operating system 230 to render a human-perceptible view of the statedata (FIG. 17, block 296). For example, the area connect service 254 mayinvoke the interface service 240 to render a representation of each ofthe communicants associated with objects currently in the area on thedisplay 132. In some embodiments, the communicants may be represented byan icon, thumbnail image, or other graphic that optionally is labeledwith the communicant's name. In some embodiments, the state data ispresented in a graphical interface of a software application thattriggered the invocation of the area connect service 254. In someembodiments, the state data is presented in an embodiment of theheads-up display (HUD) interface that is described in U.S. PatentApplication No. 61/042,714, filed Apr. 4, 2008.

iv. Entering a Virtual Area

After a connection has been established with a virtual area instance,the software application that triggered the invocation of the areaconnect service 254 can give the user an option to request entry intothe virtual area instance or can automatically request entry into thevirtual area instance on behalf of the user.

FIG. 18 shows an embodiment of a method that is implemented by the areaentry service 255, the stream switching service 266, and the streamhandler services 268 of the PRT framework 232 in response to a PRT APIcall requesting entry into a virtual area.

In accordance with the method of FIG. 18, the area entry service 255declares an intention to enter the virtual area to the networkinfrastructure service hosting the virtual area (FIG. 18, block 298). Inthis process, the area entry service 255 sends a message containing thedeclaration to the area service 46. The message may be sent on a channelof an existing link with the area service 46 or over a new link that isestablished with the area service by the session manager 264. Inresponse, the area service 46 determines if the user's capabilitiessatisfy the capability requirements that are associated with the virtualarea instance. If the user's capabilities meet the capabilityrequirements, the area service 46 returns to the area entry service 255configuration data that includes a definition of the virtual areainstance, a register of the objects currently in the virtual areainstance, and a set of realtime data stream sources and sinks that areassociated with objects in the virtual area in accordance with thespecification of the virtual area instance.

The stream switching service 266 initiates transfer of at least onerealtime data stream over at least one network connection with at leastone realtime data stream source respective associated with at least oneobject in the virtual area (FIG. 18, block 300). In this process, thestream switching service 266 ascertains one or more network nodes thatare associated with the instance of the virtual area based on theconfiguration data that was received from the area service 46. Thestream switching service 266 then initiates transfer of at least onerealtime data stream over at least one network connection with at leastone of the ascertained network nodes. The connections between the streamswitching service 266 and the other network nodes may be peer-to-peerconnections or server-mediated connections. With respect to apeer-to-peer connection, the connection target network node and thesession manager service 264 typically authenticate one another, and thenestablish a link over which to transmit the at least one realtime datastream either to or from the connection target. Links typically areone-way and requested by the transmitter and accepted or rejected by thereceiver.

In the illustrated embodiment, the stream handler services 268 processthe initiated realtime data streams in accordance with at least onestream handling definition in the specification of the virtual areainstance (FIG. 18, block 302). In this process, one or more of thestream handler services 268 includes a manager that assembles a set ofstream processing objects into a directed graph in accordance with thestream processing configuration that is defined in the virtual areaspecification.

FIG. 19 shows an embodiment of a method in accordance with which anembodiment of the stream switching service 266 processes theconfiguration data that is received from the area service 46 in order todetermine a set of required realtime data stream connections to makewhen the user enters a virtual area or crosses a boundary between zonesof a virtual area. As explained above, the configuration data includes acopy of the virtual area specification 204 (see FIG. 15) and a copy ofthe updated objects register 206 (see FIG. 15). In some embodiments, theconfiguration data additionally includes the stream mix list 208 (seeFIG. 15), which identifies the mixes (or combinations) of the realtimedata streams generated by the network nodes 138, 142 that currently arebeing produced by the area service 46.

The stream switching service 266 initializes the local objects register220 (see FIG. 15) with the copy of the objects register 206 that isreceived from the area service 46 (FIG. 19, block 304). The streamswitching service 266 also initializes the local stream mix list 222(see FIG. 15) with the copy of the stream mix list 208 that is receivedfrom the area service 46 (FIG. 19, block 306). The stream switchingservice 266 additionally initializes the local virtual areaspecification cache 224 (see FIG. 15) with the copy of the virtual areaspecification 204 that is received from the area service 46 (FIG. 19,block 308).

The stream switching service 266 builds a list 214 (see FIG. 15) ofoccupied zones from the virtual area specification 224 and the locationof the user's avatar in the virtual area instance (FIG. 19, block 310).In this process, the stream switching service 266 retrieves the currentposition of the user's avatar in the virtual area instance from thecurrent object positions database 216, which contains the coordinates ofthe avatar's current position in the virtual area instance. Thesecoordinates are determined from the realtime motion data stream receivedfrom an input device, such as the computer mouse 218. The streamswitching service 266 then compares the current position of the user'savatar with the zone definitions in the virtual area specification 224.The stream switching service 266 compiles the occupied zones list 214from all the zones in the virtual area specification that coincide withthe current position of the user's avatar. For example, in someembodiments, the occupied zones list 214 consists of all the zones whosemeshes contain the current position of the user's avatar.

The stream switching service 266 determines a set of target realtimedata stream types that are defined for the zones in the occupied zoneslist 214 and the target supported feature list, which accounts for theclass of the client (e.g., a voice-only client versus a full-featuredclient) (FIG. 19, block 312). The stream switching service 266 thendetermines a set of required realtime data stream data from the set oftarget realtime data stream types, the positions of the objects in thevirtual area instance, and the switching rules defined in the virtualarea specification 224 (FIG. 19, block 314). Additional detailsregarding the process of determining the set of target realtime datastream types and the process of determining the set of required realtimedata stream data are described in U.S. application Ser. Nos. 11/923,629and 11/923,634, both of which were filed on Oct. 24, 2007.

In some exemplary embodiments, after the stream switching service 266has determined the set of realtime data stream data that enables theuser to participate in a collaborative communication session with othernetwork nodes in the shared virtual area instance (FIG. 19, block 314),the stream switching service 266 determines the realtime data streamconnections that will result in the delivery of the required data streamdata to the computer system 200.

In some of these embodiments, the stream switching service 266determines a realtime data stream handling topology that delivers theset of realtime data streams to the computer system 200 based at leastin part on bandwidth capabilities of the computer system 200. In thisprocess, the stream switching service 266 determines a respective formin which to receive each of the realtime data streams from an unmixedrealtime data stream and a stream mix derived from a combination ofrealtime data streams. The stream switching service 266 also determinesa network route over which each of the realtime streams is received froma direct peer-to-peer network route and a network route mediated by oneor more of the other network nodes. After the stream handling topologyhas been determined, the stream switching service 266 establishesrealtime data stream connections between the computer system 200 andother ones of the network nodes in accordance with the determined streamhandling topology.

FIG. 20 shows an embodiment of a method that is implemented by thestream switching service 266 in the process of determining a topology ofrealtime data stream connections that deliver the required data streamdata to the computer system 200.

In accordance with this method, the stream switching service 266determines if the computer system 200 has sufficient bandwidth toreceive the set of required realtime data stream data 316 directly fromthe other network nodes (FIG. 20, block 318). In this process, the othernetwork nodes transmit link requests to the computer system 200. Thelink requests indicate the respective bandwidth requirements fortransmitting the respective sets of realtime data streams needed by thecomputer system 200. The stream switching service 266 compares theoverall bandwidth that is needed to establish the required directconnections with the download bandwidth that is available currently tothe computer system 200 as reported by the bandwidth monitor service 274(see FIG. 16).

If the available bandwidth is at least equal to the overall requiredbandwidth, the stream switching service 266 establishes directconnections with the other network nodes that provide the requiredrealtime data stream data (FIG. 20, block 320). In this process, thesession manager service 264, creates sockets (e.g., TCP sockets orspecialized realtime sockets optimized for performance) between thecomputer system 200 and one or more of the other network nodes 138, 202,142. The sockets that are created typically include for each realtimedata stream type one socket that carries the realtime data stream andone socket for carrying control information (e.g., quality of serviceinformation) that is associated with transmission and reception of theassociated realtime data stream packets. The stream handler services 268process the realtime data streams, including encrypting them, recordingthem, and delivering the processed data streams to the visualizationengine service 272, the operating system user interface service 240, andthe operating system device manager service 244 as needed for renderinginto the user interface and transmission over the network 42.

If the available bandwidth is less than the required bandwidth (FIG. 20,block 318), the stream switching service 266 checks the stream mix list222 (see FIG. 15) to determine if a stream mix that provides therequired realtime data stream data currently is being generated by thearea service 46 (FIG. 20, block 322). If the needed stream mix isavailable, the stream switching service 266 establishes with the areaservice 46 a connection over which a copy of the needed realtime datastream mix is transmitted from the area server 46 to the computer system200 (FIG. 20, block 324). If the needed stream mix is not available, thestream switching service 266 sends a stream mix request to the areaservice 46 (FIG. 20, block 326). If possible, the area service 46generates the needed stream mix in response to the stream mix request.

v. Connecting to Connection Targets

FIG. 21 shows an embodiment of a method that is implemented by thetarget connect service 256 of the PRT framework 232 in response to a PRTAPI call requesting a connection to a connection target.

In accordance with the method of FIG. 21, the target connect service 256determines a designation of at least one connection target (FIG. 21,block 330). In some embodiments, the target connect service 256 isinvoked by any of a software application, an operating system service,and a PRT framework service with a PRT API call that includes aconnection target designation. For example, the connection objectmanager service 253 may invoke the target connect service 256 with a PRTAPI call that includes a connection target designation that theconnection object manager service 253 extracted from an instance of aconnection object that is associated with a computer data file or asoftware application.

The target connect service 256 establishes a session with a networkinfrastructure service that manages distribution of connection handlesfor network nodes (FIG. 21, block 332). In this process, the area targetconnect service 256 invokes the session manager service 264 to establisha session with the rendezvous service 48 in the manner described above.

The target connect service 256 declares to the network infrastructureservice an intention to connect to one or more of the connection targetscorresponding to the connection target designation (FIG. 21, block 334).The rendezvous service 48 identifies the one or more connection targetsthat correspond to the connection target designation. If the connectionrule designates specific connection targets with target identifiers, therendezvous service 48 queries the presence database for the states andcapability requirements of connection targets corresponding to thedesignated target identifiers. If the connection rule designatesconnection targets with a set of one or more attribute values, therendezvous service 48 queries the presence database for the states andcapability requirements that are associated with connection targetshaving attribute values that match the designated attribute values. Therendezvous service 48 compares the capabilities of the user with thecapability requirements that are associated with each of the identifiedconnect targets. The rendezvous service 48 transmits to the connectservice 256 the respective connection handle of each of the identifiedconnection targets whose capability requirements are satisfied.

After receiving at least one respective network node connection handlefrom the network infrastructure service (FIG. 21, block 336), the targetconnect service 256 invokes the stream switching service 266 to initiatetransfer of at least one realtime data stream over at least one networkconnection with a network node associated with the at least onerespective network node connection handle (FIG. 21, block 338). Theconnections between the stream switching service 266 and the othernetwork nodes may be peer-to-peer connections or server-mediatedconnections. With respect to a peer-to-peer connection, the connectiontarget network node and the session manager service 264 typicallyauthenticate one another, and then establish a link over which totransmit the at least one realtime data stream either to or from theconnection target. Links typically are one-way and requested by thetransmitter and accepted or rejected by the receiver.

vi. Exporting Presence

FIG. 22 shows an embodiment of a method that is implemented by theexport presence service 260 in response to a PRT API call requesting theexportation of presence information describing the current position ofthe user in at least one of a computer data file or a softwareapplication to one or more connection targets.

In accordance with the method of FIG. 22, the export presence service260 determines a designation of at least one connection target (FIG. 22,block 340). In some embodiments, the export presence service 260 isinvoked by any of a software application, an operating system service,and a PRT framework service with a PRT API call that includes aconnection target designation and a definition of the user's position.For example, the connection object manager service 253 may invoke theexport presence service 260 with a PRT API call that includes aconnection target designation that the connection object manager service253 extracted from an instance of a connection object that is associatedwith a computer data file or a software application.

The export presence service 260 establishes a session with a networkinfrastructure service that manages the exchange of presence databetween network nodes (FIG. 22, block 342). In this process, the exportpresence service 260 invokes the session manager service 264 toestablish a session with the rendezvous service 48 in the mannerdescribed above.

The export presence service 260 declares to the network infrastructureservice an intention to export presence data describing the user'sposition to at least one of the network nodes corresponding to theconnection target designation (FIG. 21, block 334). In response to thedeclaration, the rendezvous service 48 identifies the one or moreconnection targets that correspond to the connection target designation.If the connection rule designates specific connection targets withtarget identifiers, the rendezvous service 48 queries the presencedatabase for the states and capability requirements of the connectiontargets corresponding to the designated target identifiers. If theconnection rule designates connection targets with a set of one or moreattribute values, the rendezvous service 48 queries the presencedatabase for the states and capability requirements that are associatedwith connection targets having attribute values that match thedesignated attribute values. The rendezvous service 48 compares thecapabilities of the user with the capability requirements that areassociated with each of the identified connect targets. The rendezvousservice 48 transmits the user's presence data to each of the identifiedconnection targets whose capability requirements are satisfied.

d. Invoking PRT Framework Functions

The functions of the PRT framework 232 are invoked by calls to the PRTAPI 250. These calls may be generated in a variety of different ways. Inthe illustrated embodiments, calls to the PRT API 250 may be made by anyof a software application executing on the computer system 200 or aremote network node, an operating system service executing on thecomputer system 200 or a remote network node, and a networkinfrastructure service.

In some embodiments, a software application developer designs a softwareapplication to invoke the PRT API 250 to establish a realtimeapplication environment for running the software application. In thisregard, the software application may be designed to invoke the PRT API250 at one or more specific positions in the application (e.g., atstartup or when a particular function of the software application isinvoked) or each time a boundary between sections of the softwareapplication is crossed by the user. In these embodiments, the softwareapplication typically invokes the PRT API 250 with a call that includesa definition of a current section in at least one of the softwareapplication and a computer data file being processed by the softwareapplication.

In some of these embodiments, a software application is configured toinvoke the PRT API 250 with a call that establishes a network connectionwith at least one connection target. For example, the softwareapplication may call the connection object manager service 253 with adesignated position in a computer data file or a software application.The connection object manager service 253 instantiates the connectionobject instance associated with the position in the computer data fileor the software application. The connection object typically includes arespective designation of the virtual area and a respective designationof one or more connection targets that are associated with the virtualarea. The software application may present the user with an option toenter the virtual area or connect to one or more of the connectiontargets. If the user elects to enter the virtual area or connect to theconnection targets, the software application invokes the PRT API 250with a PRT API call that initiates transfer of at least one realtimedata stream with the connection target over the network connection basedon position in the virtual area instance. For example, in response tothe PRT API call, the connection object manager service 253 invokes oneor more of the other PRT services (e.g., the area connect service 254 orthe target connect service 256) that establish a connection to a virtualarea or a connection target in accordance with the attribute values ofthe instantiated connection object instance. One or more of the servicesof the operating system 230 and the PRT framework 232 process therealtime data stream into a format that can be rendered as ahuman-perceptible output (e.g., a visual image on the display 132 or anaudio output through speakers 278, 280).

In some embodiments, the PRT API 250 is invoked in a computer operatingsystem implemented method of invoking the software application oropening the computer data file.

For example, the PRT API 250 can be invoked by the file manager service240 of the operating system 230 in the process of opening a computerdata file. In some embodiments, this process includes identifying theassociated software application based on an association of the softwareapplication with a filename extension associated with the computer datafile, and executing the associated software application to open thecomputer data file. In some of these embodiments, a PRT-aware filemanager service of the operating system manages a file attributesdatabase (e.g., in extended file attributes that can be associated withthe computer data file at the file system level of an operating system)that includes a PRT-enabled attribute that indicates whether or not theassociated computer data file is configured with PRT features. Inresponse to a request to open the computer data file, the file managerservice 238 reads the file attributes database. If the PRT-enabledattribute value indicates that the computer data file is configured withPRT features, the file system manager service invokes the connectionobject manager service 253 with a call to the PRT API 250 that includesan identifier of the computer data file. In some of these embodiments,the file attributes database additionally includes an optionaldefinition of an initial position in the computer data file. In theseembodiments, the file manager service 238 passes the initial positiondefinition to the connection object manager service 253 in the PRT APIcall. The connection object manager service 253 uses the initialposition definition to determine a connection object that is associatedwith the computer data file.

The PRT API 250 also can be invoked by the program loader service 242 ofthe operating system 230 in the process of creating an initial operatingenvironment for a software application. In some embodiments, thisprocess includes loading at least one executable of the softwareapplication into memory, preparing the executable for execution, andexecuting the prepared executable. In some of these embodiments, asoftware application file also may be associated with a PRT-enabledattribute that can be read by the PRT-aware file manger service. Inthese embodiments, a user's request to run the software applicationtriggers the file system manager service to invoke the connection objectmanager service 253 with a call to the PRT API 250 that includes anidentifier of the computer data file and optionally includes an initialposition definition. In some embodiments, a software applicationdeveloper incorporates a PRT-enabled attribute or a reference to aconnection object in a header of a software application file (e.g., aheader or segment that describes how the software application should beloaded into memory by a program loader service of an operating system).In some of these embodiments, the software application headeradditionally includes an optional definition of an initial position inthe software application. In these embodiments, a command line insoftware application header can instruct the program loader service toinvoke the connection object manager service 253 with a call to the PRTAPI 250 that includes an identifier of the computer data file andoptionally includes the initial position definition. If the softwareapplication header stores a reference to a connection object that isindexed in a connection object database, a command line in the softwareapplication header can instruct the program loader service to invoke theconnection object manager service 253 with a call that contains theconnection object reference.

V. Exemplary Applications

The pervasive realtime framework 12 supports the development of a widevariety of realtime software applications that can leverage a newoperating environment paradigm in which realtime connections betweennetwork nodes are pervasive.

In a first embodiment, a personal information manager softwareapplication (e.g., the Microsoft® Outlook® software application) isdesigned (either originally or through a plugin module or macro) toleverage the functionality provided by the PRT framework 12. In thisembodiment, the personal information manager software applicationincludes an electronic mail task, a calendar task, and contactmanagement task. Each of these tasks is defined as a separate sectionand is associated with a respective connection object. The sectioncorresponding to the electronic mail task, for example, may beassociated with a connection object that specifies that when reading anelectronic message sent to or sent from any of the contacts in adesignated work group, the PRT framework 12 should connect to aspecified virtual area associated with the work group and exportpresence information to ones the contacts in the work group who are notcurrently in the virtual area.

In the first embodiment, when the user's focus of attention is on anelectronic mail message in the electronic mail task, the personalinformation manager software application invokes the connection objectmanager service 253 with a PRT API call that includes a definition ofposition that corresponds to the electronic mail task and a list of thesender and the recipients of the electronic mail message. The connectionobject manager service 253 retrieves the connection object associatedwith the electronic mail function based on the position definition. Theconnection object manager service 253 invokes the area connect service254, which attempts to connect to the virtual area designated in theconnection object subject to the user's preferences and the capabilityrequirements of the virtual area. The connection object manager service253 also invokes the target connect service 256, which attempts toexport presence information to ones the contacts in the work group whocurrently are not in the virtual area subject to the user's preferencesand the capability requirements of the virtual area. In this way, theelectronic mail task of the personal information manager softwareapplication can leverage the functions of the PRT framework 12 in orderto provide users with realtime connections with relevant contacts basedon the user's focus of attention in the electronic mail task. The othertasks of the personal information manager software application also canbe designed to leverage the functionality of the PRT framework 12.

In a second embodiment, a web browser software application (e.g., theMicrosoft® Internet Explorer® software application, the Firefox®software application, and the Safari® software application) is designed(either originally or through a plugin module or macro) to leverage thefunctionality provided by the PRT framework 12. In this embodiment, theweb browser software application includes a tabbed document interfacethat allows a user to switch between different web pages without havingto switch top level windows. One or more web pages (e.g., a default homeweb page and a customer service web page) are associated with respectiveconnection objects. The section corresponding to the home web page, forexample, may be associated with a connection object that specifies thatwhen viewing the home web page in a tab of the web browser softwareapplication, the PRT framework 12 should connect to a specified virtualarea associated with the user (e.g., the user's personal virtual area ora virtual area associated with the user's work group). The sectioncorresponding to the customer service web page may be associated with aconnection object that specifies that when viewing the customer serviceweb page in a tab of the web browser software application, the PRTframework 12 should connect to a specified customer service virtual areaand automatically connect to any communicants in the customer servicevirtual area who have a role attribute value corresponding to a customerservice representative.

In the second embodiment, when the user's focus of attention is on a tabpresenting the default home web page, the web browser softwareapplication invokes the connection object manager service 253 with a PRTAPI call that includes a definition of position that corresponds to thedefault home page document. The connection object manager service 253retrieves the connection object associated with the default home pagedocument based on the position definition. The connection object managerservice 253 invokes the area connect service 254, which attempts toconnect to the virtual area designated in the connection object subjectto the user's preferences and the capability requirements of the virtualarea.

When the user's focus of attention is on a tab presenting the customerservice web page, the web browser software application invokes theconnection object manager service 253 with a PRT API call that includesa definition of position that corresponds to the customer service webpage document. The connection object manager service 253 retrieves theconnection object associated with the default home page document basedon the position definition. The connection object manager service 253invokes the area connect service 254, which attempts to connect to thevirtual area designated in the connection object subject to the user'spreferences and the capability requirements of the virtual area. If anyof the current occupants of the virtual area has a customer servicerepresentative role attribute value, the connect service 254 invokes thearea entry service 255, which attempts to enter the virtual area subjectto the user's preferences and the capability requirements of the virtualarea. If the area entry attempt is successful, the stream switchingservice 266 automatically initiates connections with the network nodesassociated with objects (e.g., avatars) in the virtual area.

In a third embodiment, a spreadsheet software application (e.g., theMicrosoft® Excel® software application) is designed (either originallyor through a plugin module or macro) to leverage the functionalityprovided by the PRT framework 12. In this embodiment, the spreadsheetsoftware application includes a tabbed worksheet interface that allows auser to switch between different worksheets without having to switch toplevel windows. One or more worksheets (e.g., a stock analysis worksheet)are associated with respective connection objects. The sectioncorresponding to the stock analysis worksheet, for example, may beassociated with a connection object that specifies that when viewing thestock analysis worksheet in a tab of the spreadsheet softwareapplication, the PRT framework 12 should connect to a specified virtualarea associated with the user (e.g., a virtual area associated with aspecific type of financial analysis) and connect to a designated datasource connection target (e.g., an online stock quoting service) with arequest for particular data or data type (e.g., realtime stock quoteinformation for a set of stocks listed on the stock analysis worksheet).

In the third embodiment, when the user's focus of attention is on a tabpresenting the stock analysis worksheet, the spreadsheet softwareapplication invokes the connection object manager service 253 with a PRTAPI call that includes a definition of position that corresponds to thestock analysis worksheet. The connection object manager service 253retrieves the connection object associated with the stock analysisworksheet based on the position definition. The connection objectmanager service 253 invokes the area connect service 254, which attemptsto connect to the virtual area designated in the connection objectsubject to the user's preferences and the capability requirements of thevirtual area. The connection object manager service 253 also invokes thetarget connect service 256, which attempts to connect to the designateddata source and retrieve the requested data or data type. If theconnection attempt is successful, the stream handler service 268 may beconfigured to assemble a directed graph of realtime processing objectsto perform transforms on the realtime stock quote information inaccordance with a realtirme processing specification, which may beprovided either by the stock analysis work sheet or by the virtual area.

VI. Conclusion

The embodiments that are described herein provide a pervasive realtimeframework that supports the execution of realtime software applicationswith high-level functions that significantly reduce the effort and timeneeded to develop realtime software applications in a new operatingenvironment paradigm in which realtime connections between network nodesare pervasive. The pervasive realtime framework handles the complextasks of connecting to communicants, virtual areas, and other networkresources, as well as switching those connections in response to userinputs and thereby enables software application developers to focus ondeveloping high-level realtime software application functionality.

Other embodiments are within the scope of the claims.

1.-67. (canceled)
 68. A method performed by a computer system, themethod comprising: transmitting by the computer system, electroniccontent to an application being executed on a client network node of auser who is a member of a group, wherein the electronic content isassociate with a designation of the group, and a view of the electroniccontent is rendered by the application; conditioned on a determinationthat a current focus of the user is on the rendered view of theelectronic content, automatically by the computer system establishing apresence for the user in an instance of a virtual area, and exporting anindication of the presence of the user in the instance of the virtualarea to an application being executed on a client network node ofanother member of the group.